1 #ifndef _tinyfadsixteen_h_ 2 #define _tinyfadsixteen_h_ 9 template <
class T>
class TinyFad<16,T> {
37 void diff(
const size_t ith,
const size_t sz){
57 case 0 : dx0_ = T(1.);
break;
58 case 1 : dx1_ = T(1.);
break;
59 case 2 : dx2_ = T(1.);
break;
60 case 3 : dx3_ = T(1.);
break;
61 case 4 : dx4_ = T(1.);
break;
62 case 5 : dx5_ = T(1.);
break;
63 case 6 : dx6_ = T(1.);
break;
64 case 7 : dx7_ = T(1.);
break;
65 case 8 : dx8_ = T(1.);
break;
66 case 9 : dx9_ = T(1.);
break;
67 case 10 : dx10_ = T(1.);
break;
68 case 11 : dx11_ = T(1.);
break;
69 case 12 : dx12_ = T(1.);
break;
70 case 13 : dx13_ = T(1.);
break;
71 case 14 : dx14_ = T(1.);
break;
72 case 15 : dx15_ = T(1.);
break;
73 default : cout <<
"ith = " << ith <<
" out of definition set" << endl;exit(1);
77 TinyFad(
const T& ind,
const int ini) : n(ini+1), val_(ind) {
96 case 0 : dx0_ = T(1.);
break;
97 case 1 : dx1_ = T(1.);
break;
98 case 2 : dx2_ = T(1.);
break;
99 case 3 : dx3_ = T(1.);
break;
100 case 4 : dx4_ = T(1.);
break;
101 case 5 : dx5_ = T(1.);
break;
102 case 6 : dx6_ = T(1.);
break;
103 case 7 : dx7_ = T(1.);
break;
104 case 8 : dx8_ = T(1.);
break;
105 case 9 : dx9_ = T(1.);
break;
106 case 10 : dx10_ = T(1.);
break;
107 case 11 : dx11_ = T(1.);
break;
108 case 12 : dx12_ = T(1.);
break;
109 case 13 : dx13_ = T(1.);
break;
110 case 14 : dx14_ = T(1.);
break;
111 case 15 : dx15_ = T(1.);
break;
112 default : cout <<
"ini = " << ini <<
" out of definition set" << endl;exit(1);
173 int N()
const {
return n-1;}
178 const T&
d0()
const {
return dx0_;}
179 T&
d0() {
return dx0_;}
181 const T&
d1()
const {
return dx1_;}
182 T&
d1() {
return dx1_;}
184 const T&
d2()
const {
return dx2_;}
185 T&
d2() {
return dx2_;}
187 const T&
d3()
const {
return dx3_;}
188 T&
d3() {
return dx3_;}
190 const T&
d4()
const {
return dx4_;}
191 T&
d4() {
return dx4_;}
193 const T&
d5()
const {
return dx5_;}
194 T&
d5() {
return dx5_;}
196 const T&
d6()
const {
return dx6_;}
197 T&
d6() {
return dx6_;}
199 const T&
d7()
const {
return dx7_;}
200 T&
d7() {
return dx7_;}
202 const T&
d8()
const {
return dx8_;}
203 T&
d8() {
return dx8_;}
205 const T&
d9()
const {
return dx9_;}
206 T&
d9() {
return dx9_;}
208 const T&
d10()
const {
return dx10_;}
211 const T&
d11()
const {
return dx11_;}
214 const T&
d12()
const {
return dx12_;}
217 const T&
d13()
const {
return dx13_;}
220 const T&
d14()
const {
return dx14_;}
223 const T&
d15()
const {
return dx15_;}
228 case 0 :
return dx0_;
229 case 1 :
return dx1_;
230 case 2 :
return dx2_;
231 case 3 :
return dx3_;
232 case 4 :
return dx4_;
233 case 5 :
return dx5_;
234 case 6 :
return dx6_;
235 case 7 :
return dx7_;
236 case 8 :
return dx8_;
237 case 9 :
return dx9_;
238 case 10 :
return dx10_;
239 case 11 :
return dx11_;
240 case 12 :
return dx12_;
241 case 13 :
return dx13_;
242 case 14 :
return dx14_;
243 case 15 :
return dx15_;
244 default : cout <<
"i out of bounds" << endl;exit(1);
247 const T&
dx(
int i)
const {
249 case 0 :
return dx0_;
250 case 1 :
return dx1_;
251 case 2 :
return dx2_;
252 case 3 :
return dx3_;
253 case 4 :
return dx4_;
254 case 5 :
return dx5_;
255 case 6 :
return dx6_;
256 case 7 :
return dx7_;
257 case 8 :
return dx8_;
258 case 9 :
return dx9_;
259 case 10 :
return dx10_;
260 case 11 :
return dx11_;
261 case 12 :
return dx12_;
262 case 13 :
return dx13_;
263 case 14 :
return dx14_;
264 case 15 :
return dx15_;
265 default : cout <<
"i out of bounds" << endl;exit(1);
270 case 0 :
return dx0_;
271 case 1 :
return dx1_;
272 case 2 :
return dx2_;
273 case 3 :
return dx3_;
274 case 4 :
return dx4_;
275 case 5 :
return dx5_;
276 case 6 :
return dx6_;
277 case 7 :
return dx7_;
278 case 8 :
return dx8_;
279 case 9 :
return dx9_;
280 case 10 :
return dx10_;
281 case 11 :
return dx11_;
282 case 12 :
return dx12_;
283 case 13 :
return dx13_;
284 case 14 :
return dx14_;
285 case 15 :
return dx15_;
286 default : cout <<
"i out of bounds" << endl;exit(1);
289 const T&
d(
int i)
const {
291 case 0 :
return dx0_;
292 case 1 :
return dx1_;
293 case 2 :
return dx2_;
294 case 3 :
return dx3_;
295 case 4 :
return dx4_;
296 case 5 :
return dx5_;
297 case 6 :
return dx6_;
298 case 7 :
return dx7_;
299 case 8 :
return dx8_;
300 case 9 :
return dx9_;
301 case 10 :
return dx10_;
302 case 11 :
return dx11_;
303 case 12 :
return dx12_;
304 case 13 :
return dx13_;
305 case 14 :
return dx14_;
306 case 15 :
return dx15_;
307 default : cout <<
"i out of bounds" << endl;exit(1);
401 dx0_ = dx0_ * in.
val_ + val_ * in.
dx0_;
402 dx1_ = dx1_ * in.
val_ + val_ * in.
dx1_;
403 dx2_ = dx2_ * in.
val_ + val_ * in.
dx2_;
404 dx3_ = dx3_ * in.
val_ + val_ * in.
dx3_;
405 dx4_ = dx4_ * in.
val_ + val_ * in.
dx4_;
406 dx5_ = dx5_ * in.
val_ + val_ * in.
dx5_;
407 dx6_ = dx6_ * in.
val_ + val_ * in.
dx6_;
408 dx7_ = dx7_ * in.
val_ + val_ * in.
dx7_;
409 dx8_ = dx8_ * in.
val_ + val_ * in.
dx8_;
410 dx9_ = dx9_ * in.
val_ + val_ * in.
dx9_;
411 dx10_ = dx10_ * in.
val_ + val_ * in.
dx10_;
412 dx11_ = dx11_ * in.
val_ + val_ * in.
dx11_;
413 dx12_ = dx12_ * in.
val_ + val_ * in.
dx12_;
414 dx13_ = dx13_ * in.
val_ + val_ * in.
dx13_;
415 dx14_ = dx14_ * in.
val_ + val_ * in.
dx14_;
416 dx15_ = dx15_ * in.
val_ + val_ * in.
dx15_;
422 if (in.
val_ == 0.)
error(
"TinyFad & TinyFad::operator /= (const TinyFad & in), dividing by 0");
475 if ( in == T(0.) )
error(
"TinyFad & TinyFad::operator /= (const T & in), dividing by 0");
529 template <
class L,
class R>
inline 538 tmp.d0() = un.d0() + deux.d0();
540 tmp.d1() = un.d1() + deux.d1();
542 tmp.d2() = un.d2() + deux.d2();
544 tmp.d3() = un.d3() + deux.d3();
546 tmp.d4() = un.d4() + deux.d4();
548 tmp.d5() = un.d5() + deux.d5();
550 tmp.d6() = un.d6() + deux.d6();
552 tmp.d7() = un.d7() + deux.d7();
554 tmp.d8() = un.d8() + deux.d8();
556 tmp.d9() = un.d9() + deux.d9();
558 tmp.d10() = un.d10() + deux.d10();
560 tmp.d11() = un.d11() + deux.d11();
562 tmp.d12() = un.d12() + deux.d12();
564 tmp.d13() = un.d13() + deux.d13();
566 tmp.d14() = un.d14() + deux.d14();
568 tmp.d15() = un.d15() + deux.d15();
575 template <
class L,
class R>
inline 604 tmp.d10() = un.d10();
606 tmp.d11() = un.d11();
608 tmp.d12() = un.d12();
610 tmp.d13() = un.d13();
612 tmp.d14() = un.d14();
614 tmp.d15() = un.d15();
616 tmp.
val() = un.
val() + deux;
621 template <
class L,
class R>
inline 627 template <
class L,
class R>
inline 636 tmp.d0() = un.d0()*deux.
val() + un.
val() * deux.d0();
638 tmp.d1() = un.d1()*deux.
val() + un.
val() * deux.d1();
640 tmp.d2() = un.d2()*deux.
val() + un.
val() * deux.d2();
642 tmp.d3() = un.d3()*deux.
val() + un.
val() * deux.d3();
644 tmp.d4() = un.d4()*deux.
val() + un.
val() * deux.d4();
646 tmp.d5() = un.d5()*deux.
val() + un.
val() * deux.d5();
648 tmp.d6() = un.d6()*deux.
val() + un.
val() * deux.d6();
650 tmp.d7() = un.d7()*deux.
val() + un.
val() * deux.d7();
652 tmp.d8() = un.d8()*deux.
val() + un.
val() * deux.d8();
654 tmp.d9() = un.d9()*deux.
val() + un.
val() * deux.d9();
656 tmp.d10() = un.d10()*deux.
val() + un.
val() * deux.d10();
658 tmp.d11() = un.d11()*deux.
val() + un.
val() * deux.d11();
660 tmp.d12() = un.d12()*deux.
val() + un.
val() * deux.d12();
662 tmp.d13() = un.d13()*deux.
val() + un.
val() * deux.d13();
664 tmp.d14() = un.d14()*deux.
val() + un.
val() * deux.d14();
666 tmp.d15() = un.d15()*deux.
val() + un.
val() * deux.d15();
673 template <
class L,
class R>
inline 682 tmp.d0() = un.d0()*deux;
684 tmp.d1() = un.d1()*deux;
686 tmp.d2() = un.d2()*deux;
688 tmp.d3() = un.d3()*deux;
690 tmp.d4() = un.d4()*deux;
692 tmp.d5() = un.d5()*deux;
694 tmp.d6() = un.d6()*deux;
696 tmp.d7() = un.d7()*deux;
698 tmp.d8() = un.d8()*deux;
700 tmp.d9() = un.d9()*deux;
702 tmp.d10() = un.d10()*deux;
704 tmp.d11() = un.d11()*deux;
706 tmp.d12() = un.d12()*deux;
708 tmp.d13() = un.d13()*deux;
710 tmp.d14() = un.d14()*deux;
712 tmp.d15() = un.d15()*deux;
714 tmp.
val() = un.
val() * deux;
719 template <
class L,
class R>
inline 727 template <
class L,
class R>
inline 736 tmp.d0() = un.d0() - deux.d0();
738 tmp.d1() = un.d1() - deux.d1();
740 tmp.d2() = un.d2() - deux.d2();
742 tmp.d3() = un.d3() - deux.d3();
744 tmp.d4() = un.d4() - deux.d4();
746 tmp.d5() = un.d5() - deux.d5();
748 tmp.d6() = un.d6() - deux.d6();
750 tmp.d7() = un.d7() - deux.d7();
752 tmp.d8() = un.d8() - deux.d8();
754 tmp.d9() = un.d9() - deux.d9();
756 tmp.d10() = un.d10() - deux.d10();
758 tmp.d11() = un.d11() - deux.d11();
760 tmp.d12() = un.d12() - deux.d12();
762 tmp.d13() = un.d13() - deux.d13();
764 tmp.d14() = un.d14() - deux.d14();
766 tmp.d15() = un.d15() - deux.d15();
773 template <
class L,
class R>
inline 782 tmp.d0() -= deux.d0();
784 tmp.d1() -= deux.d1();
786 tmp.d2() -= deux.d2();
788 tmp.d3() -= deux.d3();
790 tmp.d4() -= deux.d4();
792 tmp.d5() -= deux.d5();
794 tmp.d6() -= deux.d6();
796 tmp.d7() -= deux.d7();
798 tmp.d8() -= deux.d8();
800 tmp.d9() -= deux.d9();
802 tmp.d10() -= deux.d10();
804 tmp.d11() -= deux.d11();
806 tmp.d12() -= deux.d12();
808 tmp.d13() -= deux.d13();
810 tmp.d14() -= deux.d14();
812 tmp.d15() -= deux.d15();
814 tmp.
val() = un - deux.
val();
819 template <
class L,
class R>
inline 847 tmp.d10() = un.d10();
849 tmp.d11() = un.d11();
851 tmp.d12() = un.d12();
853 tmp.d13() = un.d13();
855 tmp.d14() = un.d14();
857 tmp.d15() = un.d15();
859 tmp.
val() = un.
val() - deux;
864 template <
class L,
class R>
inline 870 if (deux.
val() == 0.)
error(
"TinyFad & TinyFad::operator /(const TinyFad<16,L> & un, const TinyFad<16,R> & deux), dividing by 0");
874 value_type dval = deux.
val();
876 tmp.d0() = ( un.d0()* deux.
val() - un.
val() * deux.d0() ) / dval / dval ;
878 tmp.d1() = ( un.d1()* deux.
val() - un.
val() * deux.d1() ) / dval / dval ;
880 tmp.d2() = ( un.d2()* deux.
val() - un.
val() * deux.d2() ) / dval / dval ;
882 tmp.d3() = ( un.d3()* deux.
val() - un.
val() * deux.d3() ) / dval / dval ;
884 tmp.d4() = ( un.d4()* deux.
val() - un.
val() * deux.d4() ) / dval / dval ;
886 tmp.d5() = ( un.d5()* deux.
val() - un.
val() * deux.d5() ) / dval / dval ;
888 tmp.d6() = ( un.d6()* deux.
val() - un.
val() * deux.d6() ) / dval / dval ;
890 tmp.d7() = ( un.d7()* deux.
val() - un.
val() * deux.d7() ) / dval / dval ;
892 tmp.d8() = ( un.d8()* deux.
val() - un.
val() * deux.d8() ) / dval / dval ;
894 tmp.d9() = ( un.d9()* deux.
val() - un.
val() * deux.d9() ) / dval / dval ;
896 tmp.d10() = ( un.d10()* deux.
val() - un.
val() * deux.d10() ) / dval / dval ;
898 tmp.d11() = ( un.d11()* deux.
val() - un.
val() * deux.d11() ) / dval / dval ;
900 tmp.d12() = ( un.d12()* deux.
val() - un.
val() * deux.d12() ) / dval / dval ;
902 tmp.d13() = ( un.d13()* deux.
val() - un.
val() * deux.d13() ) / dval / dval ;
904 tmp.d14() = ( un.d14()* deux.
val() - un.
val() * deux.d14() ) / dval / dval ;
906 tmp.d15() = ( un.d15()* deux.
val() - un.
val() * deux.d15() ) / dval / dval ;
908 tmp.
val() = un.
val() / dval;
913 template <
class L,
class R>
inline 919 if (deux.
val() == 0.)
error(
"TinyFad & TinyFad::operator /(const L & un, const TinyFad<16,R> & deux), dividing by 0");
923 value_type dval = deux.
val();
925 tmp.d0() = - un * deux.d0() / dval / dval ;
927 tmp.d1() = - un * deux.d1() / dval / dval ;
929 tmp.d2() = - un * deux.d2() / dval / dval ;
931 tmp.d3() = - un * deux.d3() / dval / dval ;
933 tmp.d4() = - un * deux.d4() / dval / dval ;
935 tmp.d5() = - un * deux.d5() / dval / dval ;
937 tmp.d6() = - un * deux.d6() / dval / dval ;
939 tmp.d7() = - un * deux.d7() / dval / dval ;
941 tmp.d8() = - un * deux.d8() / dval / dval ;
943 tmp.d9() = - un * deux.d9() / dval / dval ;
945 tmp.d10() = - un * deux.d10() / dval / dval ;
947 tmp.d11() = - un * deux.d11() / dval / dval ;
949 tmp.d12() = - un * deux.d12() / dval / dval ;
951 tmp.d13() = - un * deux.d13() / dval / dval ;
953 tmp.d14() = - un * deux.d14() / dval / dval ;
955 tmp.d15() = - un * deux.d15() / dval / dval ;
957 tmp.
val() = un / dval;
962 template <
class L,
class R>
inline 968 if (deux == 0.)
error(
"TinyFad & TinyFad::operator /(const TinyFad<16,L> & un, const R & deux), dividing by 0");
973 tmp.d0() = un.d0() / deux;
975 tmp.d1() = un.d1() / deux;
977 tmp.d2() = un.d2() / deux;
979 tmp.d3() = un.d3() / deux;
981 tmp.d4() = un.d4() / deux;
983 tmp.d5() = un.d5() / deux;
985 tmp.d6() = un.d6() / deux;
987 tmp.d7() = un.d7() / deux;
989 tmp.d8() = un.d8() / deux;
991 tmp.d9() = un.d9() / deux;
993 tmp.d10() = un.d10() / deux;
995 tmp.d11() = un.d11() / deux;
997 tmp.d12() = un.d12() / deux;
999 tmp.d13() = un.d13() / deux;
1001 tmp.d14() = un.d14() / deux;
1003 tmp.d15() = un.d15() / deux;
1005 tmp.
val() = un.
val() / deux;
1036 if ( in.
val() <= 0)
error(
"TinyFad log (const TinyFad& in) : zero or negative value");
1039 tmp.
d0() = in.
d0() / in.
val();
1040 tmp.
d1() = in.
d1() / in.
val();
1041 tmp.
d2() = in.
d2() / in.
val();
1042 tmp.
d3() = in.
d3() / in.
val();
1043 tmp.
d4() = in.
d4() / in.
val();
1044 tmp.
d5() = in.
d5() / in.
val();
1045 tmp.
d6() = in.
d6() / in.
val();
1046 tmp.
d7() = in.
d7() / in.
val();
1047 tmp.
d8() = in.
d8() / in.
val();
1048 tmp.
d9() = in.
d9() / in.
val();
1061 if ( in.
val() < 0. )
error(
"TinyFad<16,T> sqrt (const TinyFad& in) : negative value");
1065 if ( in.
val() == T(0.) ){
1066 if ( in.
d0() != T(0.) ) test =
false;
1068 if ( in.
d1() != T(0.) ) test =
false;
1070 if ( in.
d2() != T(0.) ) test =
false;
1072 if ( in.
d3() != T(0.) ) test =
false;
1074 if ( in.
d4() != T(0.) ) test =
false;
1076 if ( in.
d5() != T(0.) ) test =
false;
1078 if ( in.
d6() != T(0.) ) test =
false;
1080 if ( in.
d7() != T(0.) ) test =
false;
1082 if ( in.
d8() != T(0.) ) test =
false;
1084 if ( in.
d9() != T(0.) ) test =
false;
1086 if ( in.
d10() != T(0.) ) test =
false;
1088 if ( in.
d11() != T(0.) ) test =
false;
1090 if ( in.
d12() != T(0.) ) test =
false;
1092 if ( in.
d13() != T(0.) ) test =
false;
1094 if ( in.
d14() != T(0.) ) test =
false;
1096 if ( in.
d15() != T(0.) ) test =
false;
1099 error(
"TinyFad<16,T> sqrt (const TinyFad& in) : null value");
1173 if ( in.
val() == 0)
error(
"TinyFad tan (const TinyFad& in) undiefined in 0.");
1176 T cosinus =
cos(in.
val());
1177 tmp.
d0() = in.
d0() / cosinus / cosinus;
1178 tmp.
d1() = in.
d1() / cosinus / cosinus;
1179 tmp.
d2() = in.
d2() / cosinus / cosinus;
1180 tmp.
d3() = in.
d3() / cosinus / cosinus;
1181 tmp.
d4() = in.
d4() / cosinus / cosinus;
1182 tmp.
d5() = in.
d5() / cosinus / cosinus;
1183 tmp.
d6() = in.
d6() / cosinus / cosinus;
1184 tmp.
d7() = in.
d7() / cosinus / cosinus;
1185 tmp.
d8() = in.
d8() / cosinus / cosinus;
1186 tmp.
d9() = in.
d9() / cosinus / cosinus;
1187 tmp.
d10() = in.
d10() / cosinus / cosinus;
1188 tmp.
d11() = in.
d11() / cosinus / cosinus;
1189 tmp.
d12() = in.
d12() / cosinus / cosinus;
1190 tmp.
d13() = in.
d13() / cosinus / cosinus;
1191 tmp.
d14() = in.
d14() / cosinus / cosinus;
1192 tmp.
d15() = in.
d15() / cosinus / cosinus;
1223 if (un.
val() == 0)
error(
"TinyFad pow (const TinyFad& un, const TinyFad& deux), un = 0. ");
1266 tmp.d0() = e*in.
d0()*
pow((
double)in.
val(), (double)e-1);
1267 tmp.d1() = e*in.
d1()*
pow((
double)in.
val(), (double)e-1);
1268 tmp.d2() = e*in.
d2()*
pow((
double)in.
val(), (double)e-1);
1269 tmp.d3() = e*in.
d3()*
pow((
double)in.
val(), (double)e-1);
1270 tmp.d4() = e*in.
d4()*
pow((
double)in.
val(), (double)e-1);
1271 tmp.d5() = e*in.
d5()*
pow((
double)in.
val(), (double)e-1);
1272 tmp.d6() = e*in.
d6()*
pow((
double)in.
val(), (double)e-1);
1273 tmp.d7() = e*in.
d7()*
pow((
double)in.
val(), (double)e-1);
1274 tmp.d8() = e*in.
d8()*
pow((
double)in.
val(), (double)e-1);
1275 tmp.d9() = e*in.
d9()*
pow((
double)in.
val(), (double)e-1);
1276 tmp.d10() = e*in.
d10()*
pow((
double)in.
val(), (double)e-1);
1277 tmp.d11() = e*in.
d11()*
pow((
double)in.
val(), (double)e-1);
1278 tmp.d12() = e*in.
d12()*
pow((
double)in.
val(), (double)e-1);
1279 tmp.d13() = e*in.
d13()*
pow((
double)in.
val(), (double)e-1);
1280 tmp.d14() = e*in.
d14()*
pow((
double)in.
val(), (double)e-1);
1281 tmp.d15() = e*in.
d15()*
pow((
double)in.
val(), (double)e-1);
1288 int sign = in.
val() > 0? 1:0;
1290 if (sign)
return in;
1294 template <
class T> std::ostream& operator << (std::ostream& os, const TinyFad<16,T>& a)
1296 os.setf(std::ios::fixed,std::ios::scientific);
1298 os << a.
val() <<
" [";
TinyFad(const T &ind, const int ini)
TinyFad(const TinyFad< 16, T > &in)
TinyFad< Num, T > & operator-=(const TinyFad< Num, T > &in)
TinyFad< 16, T > abs(const TinyFad< 16, T > &in)
TinyFad< 16, T > pow(const TinyFad< 16, T > &in, double e)
TinyFad< 16, T > log(const TinyFad< 16, T > &in)
TinyFad< 16, T > operator+(const TinyFad< 16, T > &in)
TinyFad< 16, T > & operator--()
TinyFad< 16, typename NumericalTraits< L, R >::promote > operator/(const TinyFad< 16, L > &un, const TinyFad< 16, R > &deux)
TinyFad< 16, T > sin(const TinyFad< 16, T > &in)
TinyFad< 16, typename NumericalTraits< L, R >::promote > operator*(const TinyFad< 16, L > &un, const TinyFad< 16, R > &deux)
void diff(const size_t ith, const size_t sz)
AutoPointerMutexArrayInit tmp
TinyFad(const No_Initialization &)
TinyFad< 16, T > operator-(const TinyFad< 16, T > &in)
TinyFad< Num, T > & operator=(const TinyFad< Num, T > &in)
TinyFad< 16, T > tan(const TinyFad< 16, T > &in)
TinyFad< Num, T > & operator+=(const TinyFad< Num, T > &in)
TinyFad< 16, T > operator++(int)
TinyFad< Num, T > & operator*=(const TinyFad< Num, T > &in)
TinyFad< 16, T > operator--(int)
const T & dx(int i) const
TinyFad< 16, T > exp(const TinyFad< 16, T > &in)
TinyFad< 16, T > sqrt(const TinyFad< 16, T > &in)
TinyFad< Num, T > & operator/=(const TinyFad< Num, T > &in)
TinyFad< 16, T > & operator++()
TinyFad< 16, T > cos(const TinyFad< 16, T > &in)