From fc3a3ed4e02293cd9382b6ff886aacc784ab89af Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Tue, 18 Feb 2025 17:45:09 +0100 Subject: [PATCH] add proc cinv (complex inversion) --- doc/xschem_man/developer_info.html | 1 + src/scheduler.c | 4 ++++ src/xschem.tcl | 11 +++++++++++ 3 files changed, 16 insertions(+) diff --git a/doc/xschem_man/developer_info.html b/doc/xschem_man/developer_info.html index 2d795720..0cc1b8b6 100644 --- a/doc/xschem_man/developer_info.html +++ b/doc/xschem_man/developer_info.html @@ -760,6 +760,7 @@ C {verilog_timescale.sym} 1050 -100 0 0 {name=s1 timestep="1ns" precision="1ns"
  • bbox bounding box schematic
  • bbox_hilighted bounding box of highlinhted objects
  • bbox_selected bounding box of selected objects
  • +
  • build_date time and date this file was built.
  • cadlayers number of layers
  • case_insensitive case_insensitive symbol matching
  • color_ps color postscript flag
  • diff --git a/src/scheduler.c b/src/scheduler.c index 21292799..38e6866e 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -1344,6 +1344,10 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg my_snprintf(res, S(res), "%g %g %g %g", boundbox.x1, boundbox.y1, boundbox.x2, boundbox.y2); Tcl_SetResult(interp, res, TCL_VOLATILE); } + else if(!strcmp(argv[2], "build_date")) { /* time and date this file was built. */ + char date[] = __DATE__ " : " __TIME__; + Tcl_SetResult(interp, date, TCL_STATIC); + } break; case 'c': if(!strcmp(argv[2], "cadlayers")) { /* number of layers */ diff --git a/src/xschem.tcl b/src/xschem.tcl index 56fcda69..a3ed1fd3 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -731,6 +731,17 @@ proc cdiv {a b} { return $c } +# 1/b +proc cinv {b} { + + lassign $b rb ib + set rb [expr {double($rb)}] + set ib [expr {double($ib)}] + set m [expr {$rb * $rb + $ib * $ib}] + set c [list [expr {$rb / $m}] [expr {-$ib / $m}]] + return $c +} + # return real component proc creal {a} { lassign $a ra ia