Commit Graph

97 Commits

Author SHA1 Message Date
Holger Vogt 0ee5e3f32a Add a control language function cvector, to create a complex vector.
Let vec1 = cvector(50)
will generate a complex vector, with the real part values
increasing from 0 to 49, the imaginary values are set to 0.
Useful in ac loops to store result data.
2023-07-15 11:17:10 +02:00
Holger Vogt 71571a1432 Add function atanh to .control section 2023-03-18 22:31:48 +01:00
Holger Vogt 933b1fdb2b Add some comment 2022-10-14 13:50:20 +02:00
Giles Atkinson c704854b3c Fix bug reported by Anant Devi in user discussion 22/9/22.
A function call, vi(v) was misparsed as the special token i(vsource)
for the current in a voltage source.
2022-10-08 16:49:02 +02:00
Holger Vogt 0754ea7657 Make the Error message a Warning message,
because ngspice may move on
2022-10-07 13:38:20 +02:00
Holger Vogt a2beac6741 not only de-allocate the vector, but also remove it from the list.
This is to prevent a crash when after simulating with a buggy input like:
save all @q1[nonesense] (non-existing parameter) a command 'print all'
is given.
2022-10-07 11:32:30 +02:00
Giles Atkinson 7511bef7d4 Fix memory leak found by valgrind/paranoia. 2022-05-10 15:29:59 +02:00
Giles Atkinson dc978a4193 Suppress warnings from function pointer casts seen with gcc 10.2.1. 2022-05-01 10:29:43 +02:00
Holger Vogt 287406459a Make error message more verbose 2022-04-26 10:33:41 +02:00
Holger Vogt 6ba484e5d2 Remove redundant redeclaration of ‘ft_getpnames_quotes’ 2021-12-16 08:04:34 +01:00
Holger Vogt 1605d293d0 Add function integ to control language
Trapezoidal rule for integrating a vector.
2021-12-13 21:49:45 +01:00
Holger Vogt bb9f1669f6 Enable math characters also in tokens like i(z/z) by
temporarily putting " around the token.

Improve error message on missing vector
2021-12-13 21:47:54 +01:00
Holger Vogt e93a19e3e8 Allow math characters in node names
Add a function ft_getpnames_quotes()
It puts quotes " around tokens xxx, when these are enclosed as
V(xxx) and contain arithmetic characters. V(R*C) becomes
V("R*C"). After settig up the parse tree, the quotes are removed again.
Thus these math character remain part of the node name and are not
parsed as parts of an equation.
2021-12-13 21:41:16 +01:00
Holger Vogt 0caeaccdd3 fix typo 2020-08-20 15:38:18 +02:00
Holger Vogt 3a00520071 Improve error message 2020-05-02 14:59:31 +02:00
Holger Vogt d3fcf2f43f restrict removal of arg only to comma operator,
otherwise functions with a single variable may fail
2020-04-04 14:13:35 +02:00
Holger Vogt 4a3b193154 remove memory leak in function parser (bug. no 478),
second case
2020-04-04 14:13:01 +02:00
Holger Vogt 11cf6e709b third trial: get the token i(vss) as a whole in the lexer,
this prevents the parser from generating the spurious vector vss.
No need to do an extra translation i(vss) -> vss#branch.
2020-03-15 10:58:56 +01:00
Holger Vogt 89ea46e39a prevent false freeing of vector 2020-03-15 08:51:03 +01:00
Jim Monte de4788cfe5 Added conjugate function conj(). 2020-03-15 08:50:55 +01:00
Jim Monte 068df274bf Made ft_numparse() thread-safe (no internal static variables) and prepared to support ngspice variable type CP_NUM. 2020-03-15 08:50:52 +01:00
Holger Vogt b9901a2569 [PATCH 47] Refactored ft_getnames() and used the new function in
com_let().
2019-08-13 23:27:49 +02:00
Jim Monte 6bce493d25 Remove memory leak: If the check of the data fails, the data itself is leaked.
Signed-off-by: Holger Vogt <holger.vogt@uni-due.de>
2019-08-13 23:16:02 +02:00
Holger Vogt f33c3f0751 remove memory leak, when ft_getnames ... free_pnode couple
parses a vector like v(1,2)
2018-10-13 18:18:23 +02:00
Holger Vogt 2dd293707b initialize pn in ft_getpnames() parse.c
initialize dwLen in tesCreateSystemInfo() in com_sysinfo.c
Both were reported by MSVC Code Analysis
Crash of ngspice.dll in Eeschema is thus removed
(hopefully in general)
2018-07-21 23:55:00 +02:00
Holger Vogt a98d01e5f8 Use only internal memory functions, replace
free->tfree, malloc->tmalloc, realloc->trealloc
2018-07-21 23:54:43 +02:00
h_vogt ae80067fef cmath2.c, new function stddev to calculate the standard deviation of all elements of a vector 2016-10-15 15:06:17 +02:00
Francesco Lannutti ef0dcfe5f2 avoid bison dependency `version >= 2.7' 2016-07-09 20:58:17 +02:00
rlar 4c1c95e20f everywhere, use `TMALLOC()' instead of `alloc()' 2016-03-21 21:22:07 +01:00
rlar 71a7c3459b use char variants of the <ctype.h> isxxxx() family 2016-03-09 20:24:36 +01:00
rlar 8243696338 dvec abstraction, #8/11, upgrade `dvec_alloc()' 2015-12-28 20:34:42 +01:00
rlar 1304001739 dvec abstraction, #6/11, emphasise `v_plot = NULL' initialisation 2015-12-28 20:34:42 +01:00
rlar 8a4a37b5bb dvec abstraction, #4/11, emphasise `ZERO(dvec)' initialisation 2015-12-28 20:34:42 +01:00
rlar 908c650f72 dvec abstraction, #3/11, use `dvec_alloc()' 2015-12-28 20:34:42 +01:00
rlar 08ad3f6ab5 dvec abstraction, #1/11, reorder 2015-12-28 20:34:42 +01:00
rlar d632e3314d frontend/parse.c, PP_mknnode(), reorder 2015-12-22 20:45:08 +01:00
rlar 876086f768 fix commit "frontend/parse.c, bug fix, PPlex(.."dc1.@m1[vth][1]"..)"
which broke
  let something = foo[var]
notably used in
  examples/Monte_Carlo/MC_ring.sp
2015-12-16 19:17:41 +01:00
rlar 29dde7206a frontend/parse.c, introduce `alloc_pnode()' 2015-11-12 18:32:39 +01:00
rlar 45117c94fd drop yyparse() prototypes, require bison >= 2.7 which emits them 2015-10-18 00:46:13 +02:00
rlar a5f933b3ec frontend/parse.c, bug fix, PPlex(.."dc1.@m1[vth][1]"..)
The whole string was lexed into only one TOK_STR
  instead of the actual (quasi) identifier "dc1.@m1[vth]"
2015-09-24 18:25:25 +02:00
rlar 1c6efd9481 polish bison/flex makefile rules 2015-07-05 20:25:23 +02:00
rlar 5ac7858a79 rewrite, use tprintf 2015-03-28 20:10:29 +01:00
rlar c6a8429258 src/maths/cmaths, implement `nint()' (.control language) 2014-09-20 17:15:10 +02:00
rlar 2602a492b2 fix `log' in `B' and in `.control', to base e instead of 10
In the B language this can be considered a bug fix.

In the .control language this is a severe change
  and breaks backwards compatibility.

In all three languages 'numparam' 'B' and '.control' we now have
  ln    to the base e
  log   to the base e
  log10 to the base 10

Thus log and log10 is now consistent
  with the vast majority of programming languages.

ln is merely for convenience.
  very few other languages have it.
  I'd like to discourage its usage.
2014-09-12 19:18:11 +02:00
rlar 99eade8ec9 cleanup, rename cx_ln --> cx_log (.control language) 2014-09-12 19:09:52 +02:00
rlar c926f46986 cleanup, rename rename cx_log --> cx_log10 (.control language) 2014-09-12 19:09:42 +02:00
Y.Niitsu 6e3f60c6bd frontend/parse.c, allow nested `indexing', for example foo[bar[n]]
.control
compose ex1 values 111 222 333
compose ex2 values 1 2 3
print ex1 ex2 ex1[ex2[1]]
.endc
2014-04-02 21:14:10 +02:00
dwarning 075b620a86 introduce `cx_sortorder()' function 2013-12-31 16:18:52 +01:00
dwarning 4635a19ba9 introduce unwrap, minimum and maximum function 2013-12-31 16:13:17 +01:00
dwarning 6a3da0105b fft and ifft as vector functions 2013-12-31 16:13:08 +01:00