Jspice3
sqrtder.c File Reference
#include "spice.h"
#include <math.h>
#include "distodef.h"
Include dependency graph for sqrtder.c:

Go to the source code of this file.

Macros

#define JOB   char
 

Functions

void SqrtDeriv (Dderivs *new, Dderivs *old)
 

Macro Definition Documentation

#define JOB   char

Definition at line 9 of file sqrtder.c.

Function Documentation

void SqrtDeriv ( Dderivs new,
Dderivs old 
)

Definition at line 19 of file sqrtder.c.

21 {
22 
23 Dderivs temp;
24 
25 EqualDeriv(&temp, old);
26 new->value = sqrt(temp.value);
27 if (temp.value == 0.0)
28 {
29 new->d1_p = 0.0;
30 new->d1_q = 0.0;
31 new->d1_r = 0.0;
32 new->d2_p2 = 0.0;
33 new->d2_q2 = 0.0;
34 new->d2_r2 = 0.0;
35 new->d2_pq = 0.0;
36 new->d2_qr = 0.0;
37 new->d2_pr = 0.0;
38 new->d3_p3 = 0.0;
39 new->d3_q3 = 0.0;
40 new->d3_r3 = 0.0;
41 new->d3_p2r = 0.0;
42 new->d3_p2q = 0.0;
43 new->d3_q2r = 0.0;
44 new->d3_pq2 = 0.0;
45 new->d3_pr2 = 0.0;
46 new->d3_qr2 = 0.0;
47 new->d3_pqr = 0.0;
48 }
49 else
50 {
51 new->d1_p = 0.5*temp.d1_p/new->value;
52 new->d1_q = 0.5*temp.d1_q/new->value;
53 new->d1_r = 0.5*temp.d1_r/new->value;
54 new->d2_p2 = 0.5/new->value*(temp.d2_p2 -0.5 * temp.d1_p * temp.d1_p/ temp.value);
55 new->d2_q2 = 0.5/new->value*(temp.d2_q2 -0.5 * temp.d1_q * temp.d1_q/ temp.value);
56 new->d2_r2 = 0.5/new->value*(temp.d2_r2 -0.5 * temp.d1_r * temp.d1_r/ temp.value);
57 new->d2_pq = 0.5/new->value*(temp.d2_pq -0.5 * temp.d1_p * temp.d1_q/ temp.value);
58 new->d2_qr = 0.5/new->value*(temp.d2_qr -0.5 * temp.d1_q * temp.d1_r/ temp.value);
59 new->d2_pr = 0.5/new->value*(temp.d2_pr -0.5 * temp.d1_p * temp.d1_r/ temp.value);
60 new->d3_p3 = 0.5*(temp.d3_p3/new->value - 0.5/(temp.value*new->value)*(-1.5/temp.value*
61  temp.d1_p*temp.d1_p*temp.d1_p + temp.d1_p*temp.d2_p2 +
62  temp.d1_p*temp.d2_p2 + temp.d1_p* temp.d2_p2));
63 new->d3_q3 = 0.5*(temp.d3_q3/new->value - 0.5/(temp.value*new->value)*(-1.5/temp.value*
64  temp.d1_q*temp.d1_q*temp.d1_q + temp.d1_q*temp.d2_q2 +
65  temp.d1_q*temp.d2_q2 + temp.d1_q* temp.d2_q2));
66 new->d3_r3 = 0.5*(temp.d3_r3/new->value - 0.5/(temp.value*new->value)*(-1.5/temp.value*
67  temp.d1_r*temp.d1_r*temp.d1_r + temp.d1_r*temp.d2_r2 +
68  temp.d1_r*temp.d2_r2 + temp.d1_r* temp.d2_r2));
69 new->d3_p2r = 0.5*(temp.d3_p2r/new->value - 0.5/(temp.value*new->value)*(-1.5/temp.value*
70  temp.d1_p*temp.d1_p*temp.d1_r + temp.d1_p*temp.d2_pr +
71  temp.d1_p*temp.d2_pr + temp.d1_r* temp.d2_p2));
72 new->d3_p2q = 0.5*(temp.d3_p2q/new->value - 0.5/(temp.value*new->value)*(-1.5/temp.value*
73  temp.d1_p*temp.d1_p*temp.d1_q + temp.d1_p*temp.d2_pq +
74  temp.d1_p*temp.d2_pq + temp.d1_q* temp.d2_p2));
75 new->d3_q2r = 0.5*(temp.d3_q2r/new->value - 0.5/(temp.value*new->value)*(-1.5/temp.value*
76  temp.d1_q*temp.d1_q*temp.d1_r + temp.d1_q*temp.d2_qr +
77  temp.d1_q*temp.d2_qr + temp.d1_r* temp.d2_q2));
78 new->d3_pq2 = 0.5*(temp.d3_pq2/new->value - 0.5/(temp.value*new->value)*(-1.5/temp.value*
79  temp.d1_q*temp.d1_q*temp.d1_p + temp.d1_q*temp.d2_pq +
80  temp.d1_q*temp.d2_pq + temp.d1_p* temp.d2_q2));
81 new->d3_pr2 = 0.5*(temp.d3_pr2/new->value - 0.5/(temp.value*new->value)*(-1.5/temp.value*
82  temp.d1_r*temp.d1_r*temp.d1_p + temp.d1_r*temp.d2_pr +
83  temp.d1_r*temp.d2_pr + temp.d1_p* temp.d2_r2));
84 new->d3_qr2 = 0.5*(temp.d3_qr2/new->value - 0.5/(temp.value*new->value)*(-1.5/temp.value*
85  temp.d1_r*temp.d1_r*temp.d1_q + temp.d1_r*temp.d2_qr +
86  temp.d1_r*temp.d2_qr + temp.d1_q* temp.d2_r2));
87 new->d3_pqr = 0.5*(temp.d3_pqr/new->value - 0.5/(temp.value*new->value)*(-1.5/temp.value*
88  temp.d1_p*temp.d1_q*temp.d1_r + temp.d1_p*temp.d2_qr +
89  temp.d1_q*temp.d2_pr + temp.d1_r* temp.d2_pq));
90  }
91  }
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
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