Jspice3
Main Page
Data Structures
Files
File List
Globals
sqrtder.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
* SqrtDeriv computes the partial derivatives of the sqrt
14
* function where the argument to the function is itself a
15
* function of three variables p, q, and r.
16
*/
17
18
void
19
SqrtDeriv
(
new
, old)
20
Dderivs
*new, *old;
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
}
Dderivs::d2_pr
double d2_pr
Definition:
distodef.h:75
Dderivs::d3_pr2
double d3_pr2
Definition:
distodef.h:83
distodef.h
Dderivs::d3_pq2
double d3_pq2
Definition:
distodef.h:81
Dderivs::d3_p3
double d3_p3
Definition:
distodef.h:76
Dderivs::d1_q
double d1_q
Definition:
distodef.h:68
Dderivs::d2_pq
double d2_pq
Definition:
distodef.h:73
Dderivs::d3_pqr
double d3_pqr
Definition:
distodef.h:85
Dderivs::d2_r2
double d2_r2
Definition:
distodef.h:72
SqrtDeriv
void SqrtDeriv(Dderivs *new, Dderivs *old)
Definition:
sqrtder.c:19
Dderivs::d3_p2r
double d3_p2r
Definition:
distodef.h:80
Dderivs::d2_qr
double d2_qr
Definition:
distodef.h:74
Dderivs::d1_r
double d1_r
Definition:
distodef.h:69
Dderivs::d1_p
double d1_p
Definition:
distodef.h:67
Dderivs::d3_qr2
double d3_qr2
Definition:
distodef.h:84
Dderivs::d3_q3
double d3_q3
Definition:
distodef.h:77
spice.h
Dderivs::d3_q2r
double d3_q2r
Definition:
distodef.h:82
Dderivs::value
double value
Definition:
distodef.h:66
Dderivs
Definition:
distodef.h:64
Dderivs::d3_r3
double d3_r3
Definition:
distodef.h:78
Dderivs::d3_p2q
double d3_p2q
Definition:
distodef.h:79
Dderivs::d2_q2
double d2_q2
Definition:
distodef.h:71
Dderivs::d2_p2
double d2_p2
Definition:
distodef.h:70
EqualDeriv
void EqualDeriv(Dderivs *new, Dderivs *old)
Definition:
equalder.c:17
src
lib
dev
disto
sqrtder.c
Generated by
1.8.11