Jspice3
tanderiv.c
Go to the documentation of this file.
1 /**********
2 Copyright 1990 Regents of the University of California. All rights reserved.
3 Author: 1989 Jaijeet S. Roychowdhury
4 **********/
5 
6 #include "spice.h"
7 #include <math.h>
8 
9 #define JOB char
10 #include "distodef.h"
11 
12 /*
13  * TanDeriv computes the partial derivatives of the tangent
14  * function where the argument to the function is itself a
15  * function of three variables p, q, and r.
16  */
17 
18 void TanDeriv(new, old)
19 Dderivs *new, *old;
20 {
21 
22 Dderivs temp;
23 
24 EqualDeriv(&temp, old);
25 new->value = tan(temp.value);
26 
27 new->d1_p = (1 + new->value*new->value)*temp.d1_p;
28 new->d1_q = (1 + new->value*new->value)*temp.d1_q;
29 new->d1_r = (1 + new->value*new->value)*temp.d1_r;
30 new->d2_p2 = (1 + new->value*new->value)*temp.d2_p2 + 2*new->value*temp.d1_p*new->d1_p;
31 new->d2_q2 = (1 + new->value*new->value)*temp.d2_q2 + 2*new->value*temp.d1_q*new->d1_q;
32 new->d2_r2 = (1 + new->value*new->value)*temp.d2_r2 + 2*new->value*temp.d1_r*new->d1_r;
33 new->d2_pq = (1 + new->value*new->value)*temp.d2_pq + 2*new->value*temp.d1_p*new->d1_q;
34 new->d2_qr = (1 + new->value*new->value)*temp.d2_qr + 2*new->value*temp.d1_q*new->d1_r;
35 new->d2_pr = (1 + new->value*new->value)*temp.d2_pr + 2*new->value*temp.d1_p*new->d1_r;
36 new->d3_p3 = (1 + new->value*new->value)*temp.d3_p3 +2*( new->value*(
37  temp.d2_p2*new->d1_p + temp.d2_p2*new->d1_p + new->d2_p2*
38  temp.d1_p) + temp.d1_p*new->d1_p*new->d1_p);
39 new->d3_q3 = (1 + new->value*new->value)*temp.d3_q3 +2*( new->value*(
40  temp.d2_q2*new->d1_q + temp.d2_q2*new->d1_q + new->d2_q2*
41  temp.d1_q) + temp.d1_q*new->d1_q*new->d1_q);
42 new->d3_r3 = (1 + new->value*new->value)*temp.d3_r3 +2*( new->value*(
43  temp.d2_r2*new->d1_r + temp.d2_r2*new->d1_r + new->d2_r2*
44  temp.d1_r) + temp.d1_r*new->d1_r*new->d1_r);
45 new->d3_p2r = (1 + new->value*new->value)*temp.d3_p2r +2*( new->value*(
46  temp.d2_p2*new->d1_r + temp.d2_pr*new->d1_p + new->d2_pr*
47  temp.d1_p) + temp.d1_p*new->d1_p*new->d1_r);
48 new->d3_p2q = (1 + new->value*new->value)*temp.d3_p2q +2*( new->value*(
49  temp.d2_p2*new->d1_q + temp.d2_pq*new->d1_p + new->d2_pq*
50  temp.d1_p) + temp.d1_p*new->d1_p*new->d1_q);
51 new->d3_q2r = (1 + new->value*new->value)*temp.d3_q2r +2*( new->value*(
52  temp.d2_q2*new->d1_r + temp.d2_qr*new->d1_q + new->d2_qr*
53  temp.d1_q) + temp.d1_q*new->d1_q*new->d1_r);
54 new->d3_pq2 = (1 + new->value*new->value)*temp.d3_pq2 +2*( new->value*(
55  temp.d2_q2*new->d1_p + temp.d2_pq*new->d1_q + new->d2_pq*
56  temp.d1_q) + temp.d1_q*new->d1_q*new->d1_p);
57 new->d3_pr2 = (1 + new->value*new->value)*temp.d3_pr2 +2*( new->value*(
58  temp.d2_r2*new->d1_p + temp.d2_pr*new->d1_r + new->d2_pr*
59  temp.d1_r) + temp.d1_r*new->d1_r*new->d1_p);
60 new->d3_qr2 = (1 + new->value*new->value)*temp.d3_qr2 +2*( new->value*(
61  temp.d2_r2*new->d1_q + temp.d2_qr*new->d1_r + new->d2_qr*
62  temp.d1_r) + temp.d1_r*new->d1_r*new->d1_q);
63 new->d3_pqr = (1 + new->value*new->value)*temp.d3_pqr +2*( new->value*(
64  temp.d2_pq*new->d1_r + temp.d2_pr*new->d1_q + new->d2_qr*
65  temp.d1_p) + temp.d1_p*new->d1_q*new->d1_r);
66  }
double d2_pr
Definition: distodef.h:75
double d3_pr2
Definition: distodef.h:83
double d3_pq2
Definition: distodef.h:81
double d3_p3
Definition: distodef.h:76
double d1_q
Definition: distodef.h:68
double d2_pq
Definition: distodef.h:73
void TanDeriv(Dderivs *new, Dderivs *old)
Definition: tanderiv.c:18
double d3_pqr
Definition: distodef.h:85
double d2_r2
Definition: distodef.h:72
double d3_p2r
Definition: distodef.h:80
double d2_qr
Definition: distodef.h:74
double d1_r
Definition: distodef.h:69
double d1_p
Definition: distodef.h:67
double d3_qr2
Definition: distodef.h:84
double d3_q3
Definition: distodef.h:77
double d3_q2r
Definition: distodef.h:82
double value
Definition: distodef.h:66
double d3_r3
Definition: distodef.h:78
double d3_p2q
Definition: distodef.h:79
double d2_q2
Definition: distodef.h:71
double d2_p2
Definition: distodef.h:70
void EqualDeriv(Dderivs *new, Dderivs *old)
Definition: equalder.c:17