2 #include "../include/minions.h"
6 double psi2(double2 in){
7 return in.x*in.x + in.y*in.y;
10 double maxValue(double* grid,int len){
12 for (int i=1;i<len-1;++i){
20 double minValue(double* grid,int len){
22 for (int i=1;i<len-1;++i){
29 double sumAvg(double* in, int len){
32 for (int i=0; i<len; ++i){
39 * Double precision fast inverse square-root. Useless, but necessary to have.
41 double fInvSqRt(double in){
47 l = * (long long*) &calc;
48 l = 0x5fe6eb50c7b537a9LL - (l >> 1);
49 calc = *(double *) &l;
50 calc = calc*( 1.5 - (in05*calc*calc) );
55 void coordSwap(struct Vtx::Vortex *vCoords, int src, int dest){
56 struct Vtx::Vortex d = vCoords[dest];
57 vCoords[dest] = vCoords[src];
59 //std::swap(vCoords[src],vCoords[dest]);
62 double complexMag(double2 in){
63 return sqrt(in.x*in.x + in.y*in.y);
66 double complexMag2(double2 in){
67 return in.x*in.x + in.y*in.y;
70 double2 complexMult(double2 in1, double2 in2){
72 result.x = (in1.x*in2.x - in1.y*in2.y);
73 result.y = (in1.x*in2.y + in1.y*in2.x);
77 double2 complexScale(double2 comp, double scale){
79 result.x = comp.x*scale;
80 result.y = comp.y*scale;
84 double2 conj(double2 c){
90 double2 complexDiv(double2 num, double2 den){
91 double2 c = conj(den);
92 return complexScale(complexMult(num,c),(1.0/complexMag2(den)));
95 void trans2x2(double *in, double *out){
102 void inv2x2(double *in, double *out){
103 double det = 1.0/(in[0]*in[3] - in[1]*in[2]);
112 int qSort(int2 *vCoords, int *vCoordsP int index, int length){