rlar
5656203a6c
lexical #2/6, linewrap
2012-08-03 20:12:19 +02:00
rlar
5d245c9dab
lexical #1/6, cleanup
2012-08-03 20:09:34 +02:00
h_vogt
96d2ff96e0
alloc.c: exlude controlled_exit if not MS Windows
...
not available in some tests in cmaths and executable like ngproc2mod
2012-08-03 08:28:50 +02:00
rlar
64d00a6b43
lexical #3/3, collapse append(NULL) into cp_ccom()
...
the sequence
orig_wlist = wlist;
append(NULL);
cp_ccom(wlist, ...);
is transformed.
expressions to care about in cp_ccom()
C1 := (wlist->wl_next != NULL)
C2 := (wlist->wl_word != NULL)
C3 := wl_length(wlist)
D1 := (orig_wlist != NULL)
D2 := (orig_wlist->wl_word != NULL)
D3 := wl_length(orig_wlist);
cases and their significance in cp_ccom():
orig_wlist = NULL;
wlist = wl_cons(NULL, NULL);
C1 == false
D1 == false
C2,C3 dont care
orig_wlist = wl_cons(E1, wl_cons(E2, ... wl_cons(En, NULL)))
wlist = wl_cons(E1, wl_cons(E2, .... wl_cons(En, wl_cons(NULL, NULL))))
C1 == true
D1 == true
C2 === D2
C3 === D3 + 1
2012-08-02 18:55:54 +02:00
rlar
fec5b00a0d
lexical #2/3, fix memory leaks
2012-08-02 18:55:54 +02:00
rlar
042311d0c3
lexical #1/3, move append(NULL) invokations into position
2012-08-02 18:55:54 +02:00
h_vogt
67e0cf0608
undo controlled_exit: not compatible with ancient tests in cmath under LINUX
2012-08-01 22:10:13 +02:00
rlar
1195498978
lexical #19/19, rewrite
2012-07-31 20:49:34 +02:00
rlar
5b67ecda79
lexical #18/19, rewrite
...
`cw' won't be looked at, thus the append + removal can be dropped
`wl_word' is already NULL
2012-07-31 20:49:34 +02:00
rlar
f990e517b5
lexical #17/19, rewrite
2012-07-31 20:49:34 +02:00
rlar
fa9be4336a
lexical #16/19, transform append --> append(word)
2012-07-31 20:49:34 +02:00
rlar
43a6d59c72
lexical #15/19, drop `delayed' which is never zero ...
2012-07-31 20:49:33 +02:00
rlar
47b5e9576d
lexical #14/19, drop `delayed = 0' wherever its effect isn't visible
...
without effect, because we return or will overwrite it anyway
2012-07-31 20:49:33 +02:00
rlar
01df4e9437
lexical #13/19, delay `append'
...
delay its execution, until
either `wlist' or `cw' will be accessed,
or
a return or goto nloop is inevitable
2012-07-31 20:49:33 +02:00
rlar
cff6188fe3
lexical #12/19, use `append'
...
some `assumption' are no longer valid
2012-07-31 20:49:32 +02:00
rlar
5ad8382cf1
lexical #11/19, aproach `append' here
2012-07-31 20:49:32 +02:00
rlar
d61f3c10a0
lexical #10/19, split off `append' from `newword'
2012-07-31 20:49:32 +02:00
rlar
af0a0c2c03
lexical #9/19, aproach the `append'
...
cw has never been NULL here,
because we used to survive an update of cw->wl_next here
wlist hasn't been NULL either,
because there is no place where wlist becomes NULL without
setting cw to NULL as well. yet cw isn't NULL (see above)
aproach the `append'
2012-07-31 20:49:31 +02:00
rlar
74cc38f67a
lexical #8/19, express where `wlist' and `cw' start being != NULL
2012-07-31 20:49:31 +02:00
rlar
3cbc4b0773
lexical #7/19, express verbosely where `wlist' and `cw' are NULL
2012-07-31 20:49:31 +02:00
rlar
ecb2eec279
lexical #6/19, express cp_ccom() property
2012-07-31 20:49:31 +02:00
rlar
3b575d5e3d
lexical #5/19, collapse into `newword'
2012-07-31 20:49:30 +02:00
rlar
348dc2d7d1
lexical #4/19, the `else' can take that job (unconditionally)
2012-07-31 20:49:30 +02:00
rlar
80191f3d44
lexical #3/19, attach and instantly remove a NULL wl_word here
...
this modification is faithful iff cw != NULL and cw->wl_next == NULL
cw != NULL because we have just survived an update of cw->wl_word
cw->wl_next == NULL is witnessed by:
1) cw either NULL or pointing to a wl_cons(,NULL)
2) cw not being modified, and no wl_next being modified
3) check of all function invocations with wlist/cw argument
not to modify any wl_next slot
which are:
1) cp_ccom(wlist, ...)
2) wl_free() always followed by goto nloop, which does a cw = wl_cons(,NULL)
and cp_ccom() doesn't modify any wl_next slot
the first part of the patch is intentionally similar to newword
`i' and `buf' can be modified here, because we will inevitably `goto done'
attach and instantly remove a NULL wl_word here
2012-07-31 20:49:30 +02:00
rlar
ddebb63425
lexical #2/19, rewrite the `else if'
2012-07-31 20:49:29 +02:00
rlar
f2f43bcce7
lexical #1/19, use wl_cons
2012-07-31 20:49:29 +02:00
rlar
f36772419a
Revert "cleanup, use wl_cons()"
...
This reverts parts of commit 7a7250cdbd .
There is a cleaner way to rewrite lexical.c
2012-07-31 20:48:01 +02:00
h_vogt
b85f6bbc7d
controlled_exit() instead of exit()
2012-07-31 17:54:51 +02:00
h_vogt
207adefcda
evtprint.c: no node data: error message instead of seg fault
2012-07-30 23:32:54 +02:00
rlar
64b8dfc570
use wl_delete_slice()
2012-07-29 13:11:43 +02:00
rlar
cdef8aa10e
implement wl_delete_slice()
2012-07-29 13:11:42 +02:00
h_vogt
d793dd6a61
variable xtrtol may override the XSPICE reduction of trtol
2012-07-29 12:53:31 +02:00
rlar
26468839d4
plotit(), cleanup wordlist processing
2012-07-28 19:55:09 +02:00
rlar
608e0473d3
copy(), allow NULL argument
2012-07-28 19:53:55 +02:00
rlar
b808fcec8a
fix typo in the commit `use wl_find()'
2012-07-28 14:52:17 +02:00
dwarning
3c3ba4c731
inpgmod.c: correct the range check to prevent overlap
2012-07-28 13:44:33 +02:00
dwarning
fd85e8fd42
indentation
2012-07-28 13:39:00 +02:00
rlar
891d99497d
use wl_find()
2012-07-28 12:29:23 +02:00
rlar
e2be942b72
implement wl_find()
2012-07-28 12:29:22 +02:00
rlar
60398d113c
plotit.c, prepare for usage of wl_find()
2012-07-28 12:29:19 +02:00
rlar
7a7250cdbd
cleanup, use wl_cons()
2012-07-27 21:50:05 +02:00
h_vogt
1754427bee
enhtrans.c: indentations
2012-07-25 23:05:28 +02:00
h_vogt
20429eec4d
message "OpenMP: %d threads are requested..." removed
2012-07-25 23:04:13 +02:00
h_vogt
9b122d30a3
enhtrans.c, improved error meassage upon non 'Exxx poly' line bug
2012-07-24 22:04:31 +02:00
h_vogt
12e60822fb
measure.c: indentations
2012-07-23 23:26:20 +02:00
h_vogt
ed5491c179
measure.c: Update on error message for .meas
2012-07-23 23:23:42 +02:00
h_vogt
d1d2ff94e4
measure, error message updated and return(NAN) in case of measure failure
...
test for failure with isnan()
2012-07-23 22:57:32 +02:00
rlar
05e5854268
plotit.c, whitespace cleanup
2012-07-23 19:17:25 +02:00
rlar
512644ca34
rewrite using wl_ functions
2012-07-22 11:58:29 +02:00
rlar
cd2cab2a94
bug fix, cp_ioreset(): fclosing an already closed stream
...
causing memory corruption when using `>&' stderr redirection
2012-07-22 11:56:25 +02:00
h_vogt
4d0d0fafb9
repair broken ternary function in B-Source
...
failed if parameters were included in function.
fixed by finding nested parens in gettok_char()
2012-07-21 22:23:49 +02:00
h_vogt
c3141d94e0
table: prevent crashes upon wrong inputs, allow time, temper, hertz as part of device or node name (e.g. Rtime), remove some memory leaks
2012-07-21 21:18:24 +02:00
rlar
1e65ea9e80
rewrite using wl_ functions
...
this fixed following bug as well:
echo "echo abra ; ; echo kadabra" | ngspice -p
building a circular list and looping forever
2012-07-21 18:22:10 +02:00
rlar
561d30e5bf
implement wl_chop()
2012-07-21 14:42:18 +02:00
h_vogt
87c80b842c
gettok_char(), return(NULL) if substring not found
2012-07-19 23:16:15 +02:00
rlar
fee664bc19
untabify
2012-07-19 20:26:13 +02:00
rlar
31ee05ceef
mw_coms.c, fix the cleanup using wl_cons()
2012-07-19 20:25:06 +02:00
rlar
8d0306c27a
cpif.c, whitespace, indentation, cleanups
2012-07-19 20:15:33 +02:00
rlar
75d6f6da5e
cpitf.c, cleanup using wl_ functions
2012-07-19 20:15:30 +02:00
rlar
3062e25184
mw_comms.c, whitespace, indentation, cleanups
2012-07-19 18:49:27 +02:00
rlar
95978d3697
mw_coms.c, cleanup using wl_cons()
2012-07-19 18:49:25 +02:00
rlar
2b859633a1
fix the fix wl_reverse() for empty lists
2012-07-15 19:42:09 +02:00
rlar
a890a55937
fix wl_reverse() for empty lists
2012-07-14 12:39:13 +02:00
rlar
5859f1a61d
comments for wl_cons(), wl_append_word() and wl_chop_rest()
2012-07-14 12:39:02 +02:00
rlar
9655b9885a
cleanup, use wl_cons(), wl_append_word() and wl_chop_rest()
2012-07-14 10:23:51 +02:00
rlar
d9ddaec784
implement wl_cons(), wl_append_word() and wl_chop_rest()
2012-07-14 09:18:39 +02:00
h_vogt
8defa56cf6
remove second call to tmpfile()
2012-07-14 00:10:21 +02:00
rlar
2a22c1b23c
bug fix, missing update of a wordlist's wl_prev pointer
2012-07-12 20:44:53 +02:00
rlar
e1f8033f1c
bug fix, incorrect update of a wordlist's wl_prev pointer
2012-07-12 18:49:01 +02:00
h_vogt
4ca6e56863
printf() ---> out_printf(): allow output redirection into file
2012-07-11 18:56:19 +02:00
rlar
9b34d99e51
emphasize the adms3 `U' device hijack
2012-07-07 20:13:05 +02:00
rlar
84b58ebd3b
don't mess with libtools --enable-static / --enable-shared
...
tie libspice to -shared
ngspice et al to -static
and use $(STATIC) elsewhere
which is governed by configure.ac
2012-07-07 14:51:43 +02:00
rlar
cb0a48801d
introduce AM_CFLAGS = $(STATIC)
2012-07-07 14:51:39 +02:00
h_vogt
a0b64a8624
spfactor.c, indentations
2012-07-07 10:04:21 +02:00
h_vogt
2bff8985e3
Adding TD to the fopen() is sufficient in MS Windows
...
to reliably unlink the temporary file
2012-07-07 09:53:35 +02:00
dwarning
c9b729032d
no double count of area for capacitances
2012-07-04 22:41:56 +02:00
dwarning
dcc22ada60
new scalable diode model including tunnel component
2012-07-04 08:14:33 +02:00
h_vogt
cc44d34f70
tmpfile() on MS Windows
...
create temporary files with Microsoft specific fopen() flags "TD"
and (propably redundant) remove them with an atexit() handler
see bug report #3535348
"sp*.tmp file created, but not deleted when Windows UAC is en"
https://sourceforge.net/tracker/?func=detail&atid=423915&aid=3535348&group_id=38962
2012-07-03 18:38:30 +02:00
h_vogt
3a603cf17c
Visual Studio: isatty --> _isatty
2012-07-02 19:45:43 +02:00
h_vogt
14914025c0
measure_at(), allow real valued data for meas ac
2012-06-26 23:43:50 +02:00
h_vogt
0207dc7239
no exchange of ' ' by { } inside .control section
2012-06-26 23:28:31 +02:00
h_vogt
188acd0060
correct usage of `unlink()' error return value -1
2012-06-25 15:13:02 +02:00
dwarning
4a75ce744d
dioload.c, diosetup.c, correct knee current parameter defaults
2012-06-25 07:43:27 +02:00
dwarning
a7ffb7d69f
dio/dioload.c, whitespace change
2012-06-25 07:31:03 +02:00
rlar
f661a1032d
bug fix, ltra and tra, (initial conditions)
...
reported in
https://sourceforge.net/tracker/?func=detail&atid=423915&aid=3535544&group_id=38962
bug was introduced in this commit:
Date: Wed Dec 31 17:02:46 2003 +0000
Cleaned up LTRA, TRA and URC code and updated DEVICES file.
2012-06-16 13:06:28 +02:00
dwarning
9648238ed7
call omp_set_num_threads once in central place instead in model routines
2012-06-15 23:14:08 +02:00
rlar
b398d39772
xpsice, use the CFLAGS when linking .cm code models
2012-06-13 19:15:28 +02:00
dwarning
9ea4897d06
use unified macro USE_OMP and nthreads is set in setup once - not in load as clause
2012-06-13 19:15:27 +02:00
h_vogt
fde8c46356
add ac and dc simulation to memristor model
2012-06-13 19:15:25 +02:00
h_vogt
f53eb5cf78
memristor code model in extradev
2012-06-13 19:15:24 +02:00
h_vogt
7bfd4edefc
FABS() --> fabs()
2012-06-13 19:15:23 +02:00
h_vogt
ff11ccda20
In B source the argument to 'log' may be 0 upon start of simulation, allow recovery like in function 'ln'
2012-06-13 19:15:22 +02:00
h_vogt
0a087a47c8
enable B source debugging in behavioral models, exit on error if variable strict_errorhandling is set
2012-06-13 19:15:21 +02:00
h_vogt
07727f74f0
commands.c: 'options' equivalent to 'option' and allow 'loadsnap' and 'savesnap'
...
which have been EXPERIMENTAL_CODE so far
2012-06-13 19:15:14 +02:00
dwarning
1c4f960b45
update `bsim3soi' aka `b4soi'
2012-06-13 19:15:07 +02:00
rlar
5bb4c56165
outitf.c, cleanup
2012-06-12 21:26:31 +02:00
rlar
05fd5a03d6
outitf.c, cleanup cancer of the semicolon
2012-06-12 21:26:31 +02:00
rlar
4202354704
outitf.c, cleanup comment
2012-06-12 21:26:31 +02:00
rlar
ccea57570e
outitf.c, cleanup return
2012-06-12 21:26:31 +02:00
rlar
486ffc9429
outitf.c, whitespace
2012-06-12 21:26:31 +02:00
h_vogt
c78d71c363
.nodeset all = value added to set all voltage nodes at once
2012-06-12 21:26:31 +02:00
rlar
a34cbdbeab
tiny cleanup
2012-06-12 21:26:30 +02:00
rlar
b1cbebaa99
fix tcl module compilation
...
test programs don't compile when compiling for TCL_MODULE
due to redefinition of fprintf()
2012-06-12 21:26:30 +02:00
rlar
6ae6223250
misccoms.c, com_quit(), implement exitcode
2012-06-12 21:26:30 +02:00
rlar
5436de5bab
misccoms.c, tiny rewrite
2012-06-12 21:26:30 +02:00
rlar
8dcf132199
misccoms.c, shrink scope
2012-06-12 21:26:30 +02:00
rlar
cc32eae60b
misccoms.c, collect byemessage()
2012-06-12 21:26:30 +02:00
rlar
b9c0159cd6
misccoms.c, noask
2012-06-12 21:26:30 +02:00
rlar
41de8d95ff
misccoms.c, collapse strings
2012-06-12 21:26:30 +02:00
rlar
11878ee4ad
misccoms.c, use strncasecmp()
2012-06-12 21:26:30 +02:00
rlar
5f3b453a30
misccoms.c, indentation and whitespace cleanup
2012-06-12 21:26:30 +02:00
rlar
f65cdd2f84
Changed line ending of several files from DOS to UNIX
2012-06-12 21:26:29 +02:00
rlar
3d34b22ebf
fix file modes
2012-06-12 21:26:29 +02:00
h_vogt
a212be67bc
Exit with error if file not found: fgets() cannot read from NULL
2012-06-12 21:26:29 +02:00
rlar
14f884729c
raw_write() always fopen("wb"), even on windows use "\n" line termination
2012-06-12 21:26:29 +02:00
rlar
10e5dbfbcc
raw_read() always fopen("rb") even on windows, always swallow "\r"
2012-06-12 21:26:29 +02:00
rlar
e598598d70
Reverting "NUMDdump(): add binary mode"
...
This reverts commit 40e8f868da
2012-06-12 21:26:29 +02:00
rlar
d8105873db
remove error.h, use fteext.h for controlled_exit()
2012-06-12 21:26:29 +02:00
rlar
a9eb96e164
avoid `ambiguous else' Warning
2012-06-12 21:26:29 +02:00
h_vogt
023374fa79
update `making xspice' within actual ngspice
2012-06-12 21:26:27 +02:00
h_vogt
40e8f868da
NUMDdump(): add binary mode
...
fopen() with wb
write operating point (external state) for true binary output
2012-06-12 21:26:27 +02:00
h_vogt
80ca57eb76
beautify code
2012-06-12 21:26:27 +02:00
h_vogt
d65259fd45
error return only if variable `error' is set
2012-06-12 21:26:27 +02:00
h_vogt
ca8e9b2d2d
prevent false outputs of @dev[param], when not defined in ac simulation
2012-06-12 21:26:27 +02:00
h_vogt
fe86d3d5c7
Enable ctrl-c to interrupt a simulation also for Windows GUI
2012-06-12 21:26:27 +02:00
h_vogt
a820a7cba8
Independent variable `temper' now returns the temperature in degree C
2012-06-12 21:26:27 +02:00
h_vogt
a51953d93e
allow `time', `temper', and `hertz' in expressions of behavioral R,L,C devices
2012-06-12 21:26:27 +02:00
rlar
bde3536ecc
subckt.c, doit(): fix another memory leak
2012-06-12 21:26:27 +02:00
rlar
e3402554f0
subckt.c, doit(): fix a memory leak
2012-06-12 21:26:27 +02:00
h_vogt
dcde15afd2
exclude circuits with XSPICE 'A' devices from using 'savesnap'
...
XSPICE data storage is not yet implemented
2012-06-12 21:26:26 +02:00
rlar
58b0614467
fix memory leaks in ASRC and in INPgetTree()
...
implement a reference counter `usecnt' for the elements
of the `INPparseTree'
2012-06-12 21:26:26 +02:00
rlar
4fb75fbd51
INPgetTree(), express the live range of some globals
2012-06-12 21:26:26 +02:00
rlar
d21b3a3cd5
mkfnode(), minor rewrite
2012-06-12 21:26:26 +02:00
rlar
e889c821d1
configure.ac, fix `NO_X' and `has_no_help'
...
drop configure options `--enable-x' and `--disable-x'
use `--with-x' and `--without-x' provided by AC_PATH_X
bug tracker item:
[ngspice-Bugs-3515015] Startup error message without x11
https://sourceforge.net/tracker/index.php?func=detail&aid=3515015&group_id=38962&atid=423915
2012-04-06 16:19:49 +02:00
rlar
7641450b29
inpptree.c, fix differentiation of PTF_FLOOR PTF_CEIL and PTF_POW
2012-04-05 21:55:44 +02:00
rlar
149345068f
update bison generated files
2012-04-05 21:33:54 +02:00
rlar
3bb2bd8e05
fix memory leak in PTparse()
2012-04-05 21:30:41 +02:00
rlar
15bda2b9e0
fix memory leak in PPparse()
2012-04-05 21:30:05 +02:00
rlar
76336fa21b
fix memory leak in cp_vset()
2012-04-05 21:25:04 +02:00
rlar
9a75774e36
inpptree.c, polish comments
2012-04-05 21:24:48 +02:00
rlar
42653f7c3d
inpptree.c, fix premature memory allocation
2012-04-05 21:24:25 +02:00
Michael Woodworth
3375e1b976
fix a memory leak in parse_line()
...
This has a HUGE affect on memory usage
2012-04-05 20:49:09 +02:00
h_vogt
8b780fa42b
bug_fix: R,L,C instantiations, tc1, tc2, numbers followed by `:'
...
Ternary function was not recognized in R, C, or L lines
if no voltage or current node was part of the expression,
because then B-Source is not used.
In these cases now inp_fix_ternary_operator_str() is called explicitly.
tc1, tc2 were sometimes recognized falsely,
if part of a token e.g. tc1end.
R, C, and L models are never commented out,
because their names may be token no. 4 or 5 in an R, C, or L line,
and will not be recognized if 5.
INPevaluate() will now correctly evaluate a number if followed by ':'
(number may be part of the ternary function).
2012-03-31 23:42:37 +02:00
h_vogt
232270cbc4
bug fix, inp_bsource_compat(): `tc1=' `tc2=' `reciproctc=' `}'
...
don't substitute `tc1=' `tc2=' `reciproctc='
don't fail when processing tokens followed by `}' chars
2012-03-30 22:56:15 +02:00
rlar
e91e3c4ec7
lingrid(), avoid buffer overflow
...
Bug ID: `Buffer overflow detected - ID: 3510521'
reported by Zsolt Makaró
The variable `mag3' sometimes seems to take
unexpected values
(for example log10 can be -Inf, which will be casted to 0x80000000)
and seems then to have overflown a buffer buf[LABEL_CHARS]
2012-03-27 21:07:12 +02:00
rlar
6e829f7cc4
rewrite subckt.c
...
transform doit() into a true recursive version,
drop usage of global variables
reduce scope of many variables
cleanup and readability
FIXME,
an opportunity to plug a memory leak is visible now.
2012-03-25 20:19:42 +02:00
rlar
da06afb895
bug fix, numnodes()
...
in response to the `ex-41.cir' test case
distilled from a Dietmar Warning Bug report in
"Subject: Re: subckt, param"
translate() is called recursively and depends on
`num of nodes' provided by numnodes().
numnodes() depends on availability of `su_numargs'.
But the processing allows non-processing of subckt instantiations
in inner recursions (which will be processed later)
which means `su_numargs' is not always available.
2012-03-25 18:54:10 +02:00
rlar
a1ea1b3193
round to next nearest integer for the rise, fall and cross arguments of `measure'
...
Simon Guan reported
Bug item #3509528 , `Meas goes wrong when put in a while loop'
In a .control block a `let' variable was passed to the `measure' command.
The value of this variable would have been a plain integer,
yet it was converted internally to an internal ascii representation
with exponential representation (203 ==> 2.03e2)
and then processed by `ft_numparse()' where it was converted back to
double floating point.
Because the intermediate 2.03 has
no exact representation in the space of double floating point numbers
this conversion was lossy and resulted in a non-integer value.
This non-integer was then truncated towards minus infinity in com_measure
yielding an error of -1
This commit implements round to nearest in com_measure2
to avoid the problem.
FIXME,
the internal intermediate conversion of double floating point machine
values to ascii representations must be dropped,
or replaced with an exact/lossless ascii representation.
(for example GNU printf/scanf %a or 64bit hexadecimal representation)
2012-03-25 11:08:48 +02:00
h_vogt
b4516b08ca
bug fix, iplot(): Buffer overflow
...
Thanks to Zsolt Makaró for the bug report in
Buffer overflow detected - ID: 3510521
http://sourceforge.net/tracker/?func=detail&aid=3510521&group_id=38962&atid=423915
2012-03-24 18:29:36 +01:00
h_vogt
0a2e031cb1
bug fix, inp_fix_subckt(): problem when parsing a .subckt line
...
this worked
.subckt psub a b p2 = {p1*2-1} p1 = 1
but this failed
.subckt psub a b p2 = { p1 * 2 - 1 } p1 = 1
thanks to Ivan Riis Nielsen for the report in Message
[Ngspice-devel] parsing problem (ngspice-24 tarball)
2012-03-24 18:29:36 +01:00