The following are the Borland's Turbo C sources of the programs used in the calculations and graphs of the N.N. and E.L. paper "Experimental Facts and …"
F.C and F2.C are nearly identical.
The first links with NPRNGRPH.C
and the second with NNPRNGRP.C
Which are graphic functions written for the CITIZEN 120-D dot printer.
The following related programs are included for the sake of completion:
QX.C, R.C, RX.C, TEST.C and TY.C
Other related papers:
Carmeli, m., Leibowitz and Nissani, n.(1990) Gravitation:SL.(2,C) Gauge Theory and Conservation Laws, World Scientific, Singapore, p.77.
Nissani, N. and Leibowitz, E. (1988) Physics Letters A, 126, ac 447.
Nissani, N. and Leibowitz, E.(1989). International Journal of Theoretical Physics, Vol. 28, No. 2, 235.
Nissani, N. and Leibowitz, E.(1989b). Proceedings of the Fith Marcel Grossmann Meeting on General Relatiivity, D.G. Blair and M.J. Buckingham editors, R.Rufini series editor, World Scientific, Singapore, Vol. A, p.415.
Nissani, N. and Leibowitz, E.(1990) Proceedings of the Third Canadian Conference on General Relativity and Relativistic Astrophysics, World Scientific, Singapore.
Nissani, N. and Leibowitz, E. (1991) Int.J.Th.Physics, Vol.30, No.6, 837.
Nissani, N. and Leibowitz, E.(1992) Int.J.Th.Physics, Vol.31, No.12, 2065.
QX.C
/* Q with easy change at run time of Lpx and x[2], x[3] (QX) and homogenized W2
tetrad - W3 - (for spherical symmetric Lorentz transformations)*/
/*Includes also transformations LT12W, LT23W and LT13W between the Wx and
Rotations and Boosts around W3*/
/*Some out of service eliminated*/
#include <stdio.h>
#include <math.h>
#define DEF1
#define mrs (1 - rs/x[1])
#define mrs2 sqrt(mrs)
#define trab (double x[]){double z=0;
#define sa sin(x[2])
#define sb sin(x[3])
#define ca cos(x[2])
#define cb cos(x[3])
#define V(i,j) (*V[i][j])(double x[])
#define t x[0]
#define r x[1]
#define a x[2]
#define b x[3]
#define fjk for(j=0;j<=3;j++){for(k=0;k<=3;k++){
#define d double
#define rz return z;}
#define fz (double x[]){double z=0;int i;for(i=0;i<=3;i++){ z+=
#define PI 3.1415927
#define A (Lp1*(x[1]-0.03)) /*Lorentz parameters Boosts - r = 0.3*/
#define B2 (Lp2*(x[1]-0.03))
#define B3 (Lp3*(x[1]-0.03))
#define B (Lp4*(x[1]-0.03)) /*Rotations*/
#define R2 (Lp5*(x[1]-0.03))
#define R3 (Lp6*(x[1]-0.03))
/*#define A (Lp1*(x[1]-0.03)*(x[1]-0.03)) /*Lorentz parameters Boosts - r = 0.3*/
#define B2 (Lp2*(x[1]-0.03)*(x[1]-0.03))
#define B3 (Lp3*(x[1]-0.03)*(x[1]-0.03))
#define B (Lp4*(x[1]-0.03)*(x[1]-0.03)) /*Rotations*/
#define R2 (Lp5*(x[1]-0.03)*(x[1]-0.03))
#define R3 (Lp6*(x[1]-0.03)*(x[1]-0.03))*/
#define K (8*PI*7.425*1e-29) /*GN/c2 Einstein Gravitational Constant in cm/gr*/
#define Gn 7.425e-29
#define M (rs/(2*Gn))
#define En (-0.5*Gn*M*M/L1) /*Newton Gravitational Energy*/
/*Used symbols t,r,a,b,rs,mrs,mrs2,trab,sa,sb,ca,cb,x[],V[][],V(i,j),g00*/
/*g11,g22,g33,g[],W00,..,W[][],V00,..,VB00,..,VB200,..,V[][],VB[][],VB2[][]*/
/*VRab00,..,VRab[][],XYtrabLB00,..,LB200,..,LB[][],LB2[][],LRab00,..,LRab[][]*/
/*Lor,LorB1R1,fjk,Lp1,Lp2,ggNN,gg[],d,rz,fz,PI,A,B,K,GN,gr*/
#ifndef integral
d EG(d rs, d Lp1) { d z; z = 4*PI*rs/K + (8*PI*Lp1/K)*(sqrt(1 - rs/Lp1) - 1); return z;}
#endif
int J = 0; /*(0, , ,6) Index for LorX[J]()*/
d Lp1 = 0; /* Lorentz parameter - Boosts*/
d Lp2 = 0;
d Lp3 = 0;
d Lp4 = 0;/*Rotations*/
d Lp5 = 0;
d Lp6 = 0;
d *LP[7] = {&Lp1,&Lp1,&Lp2,&Lp3,&Lp4,&Lp5,&Lp6};
int ETA[4] = {1,-1,-1,-1};
double x[4]={7.00, 1.00, 1.00 , 1.00};/*double x[4]={7.00, 1.00, 1.5708 , 0.00};*/
double dx[4]={0.1, 0.0001, 0.0001, 0.0001};
double rs=1e-2;
/*Covariant metric*/
double g00 trab z= mrs ; return z;}
double g11 trab z= -(1/mrs) ; return z;}
double g22 trab z= - (r * r); return z;}
double g33 trab z= -(r * r * sa * sa); return z;}
double (*g[4])() = { g00, g11, g22, g33};
d dg(d x[]){d z; z = g00(x) * g11(x) * g22(x) * g33(x); rz
/*Contravariant metric*/
d gg00 trab z = 1/mrs; rz
d gg11 trab z = - mrs; rz
d gg22 trab z = - 1/(r *r); rz
d gg33 trab z = - 1/(r * r * sa * sa); rz
d (*gg[4])() = {gg00,gg11,gg22,gg33};
double F0(double x[]){return 0.00;}
double F1(d x[]){return 1.00;}
/*Christoffel Symbols*/
d G001 trab z = rs/(2 * r * (r - rs)); return z;}
d G010 trab z = G001(x); rz
d G100 trab z = G001(x) * mrs * mrs; return z;}
d G111 trab z = -G001(x); return z;}
d G122 trab z = -r * mrs; return z;}
d G133 trab z = -r * mrs * sa * sa; rz
d G212 trab z = 1/r; rz
d G221 trab z = G212(x); rz
d G233 trab z = -sa * ca; rz
d G313 trab z = 1/r; rz
d G331 trab z = G313(x); rz
d G323 trab z = ca / sa; rz
d G332 trab z = G323(x); rz
d (*G[4][4][4])() = {F0,G001,F0,F0,G010,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,G100,F0,F0,F0,F0,G111,
F0,F0,F0,F0,G122,F0,F0,F0,F0,G133,F0,F0,F0,F0,F0,F0,G212,F0,F0,G221,F0,F0,F0,
F0,F0,G233,F0,F0,F0,F0,F0,F0,F0,G313,F0,F0,F0,G323,F0,G331,G332,F0};
#ifdef integral
d integral (d (*f)(), d idx, d L1, d L2){d z=0; d y[4]; d dy; int i; int n;
y[1] = L1;
dy = 0;
while(y[1] < L2){
y[1] += dy ;
dy = y[1]*y[1]*idx/2;
y[1] += dy ;
z+= f(y) * 2*dy;} rz
#endif
/* W or W1 is the solution tetrad*/
double W00 trab
z = 1/sqrt(mrs);
return z;}
double W11 trab z= mrs2 * sa * cb; return z;}
double W12 trab z= 1/r * ca * cb; return z;}
double W13 trab z= -(1/(r * sa) * sb); return z;}
double W21 trab z= mrs2 * sa * sb; return z;}
double W22 trab z= 1/r *ca * sb; return z;}
double W23 trab z= 1/(r * sa) * cb; return z;}
double W31 trab z= mrs2 * ca; return z;}
double W32 trab z= -(1/r * sa); return z;}
double (*W[4][4])() = {W00,F0,F0,F0,F0,W11,W12,W13,F0,W21,W22,W23,F0,W31,W32,F0};
d AnaliticGG00(void){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz
d AnaliticGG11(void){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r) + (1 - 1/mrs2) * rs/(r*r*r); rz
d AnaliticGG22(void){d z; z = 0.5 * (1 - 1/mrs2) * rs/(r*r*r); rz
d (*AnaliticGG[4][4])(void)={AnaliticGG00,F0,F0,F0,F0,AnaliticGG11,F0,F0,F0,F0,AnaliticGG22,F0,F0,F0,F0,AnaliticGG22};
/*Contravariant Gravitational Energy Tensor in gr/cm3*/
/*d integral (d (*f)(), d idx, d L0, d L1)*/
d TG00(void){d z; z = - gg00(x) * AnaliticGG[0][0]() / K ; rz
/*New part*/
/*W2 is the tetrad oriented as the spherical coordinates*/
double W200 trab z= 1/mrs2 ; return z;}
double W211 trab z= mrs2 ; return z;}
double W223 trab z= 1/(r * sa) ; return z;}
double W232 trab z= -1/r ; return z;}
double (*W2[4][4])() = {W200,F0,F0,F0,F0,W211,F0,F0,F0,F0,F0,W223,F0,F0,W232,F0};
/*LT23W Lorentz Transformation from W2 to W3 - W3 is a homogenized W2 for spherical
symmetric rotations*/
/*d LT23W22 trab z = cos (b); return z;}
d LT23W33 trab z = cos (b); return z;}
d LT23W23 trab z = sin (b); return z;}
d LT23W32 trab z = -sin (b); return z;}
d (*LT23W[4][4])() = {F1,F0,F0,F0,F0,F1,F0,F0,F0,F0,LT23W22,LT23W23,F0,F0,LT23W32,LT23W33};*/
/*LT23WI inverse LT23W*/
/*d (*LT23WI[4][4])() = {F1,F0,F0,F0,F0,F1,F0,F0,F0,F0,LT23W22,LT23W32,F0,F0,LT23W23,LT23W33};*/
/*LT21W Lorentz transformation from W2 to W1*/
/*d LT21W11 trab z = sa*cb; return z;}
d LT21W12 trab z = -sb; return z;}
d LT21W13 trab z = -ca*cb; return z;}
d LT21W21 trab z = sa*sb; return z;}
d LT21W22 trab z = cb; return z;}
d LT21W23 trab z = -ca*sb; return z;}
d LT21W31 trab z = ca; return z;}
d LT21W33 trab z = sa; return z;}
d (*LT21W[4][4])() = {F1,F0,F0,F0,F0,LT21W11,LT21W12,LT21W13,F0,LT21W21,LT21W22,LT21W23,F0,LT21W31,F0,LT21W33};*/
/*LT21WI inverse LT21W*/
/*d (*LT21WI[4][4])() = {F1,F0,F0,F0,F0,LT21W11,LT21W21,LT21W31,F0,LT21W12,LT21W22,F0,F0,LT21W13,LT21W23,LT21W33};*/
/*LT31W Lorentz Transformation W3 to W1*/
d LT31W00 trab z = 1.00; return z;}
d LT31W11 trab z = sa*cb; return z;}
d LT31W12 trab z = -sb*cb*(1+ca); return z;}
d LT31W13 trab z = sb*sb-ca*cb*cb; return z;}
d LT31W21 trab z = sa*sb; return z;}
d LT31W22 trab z = cb*cb-ca*sb*sb; return z;}
d LT31W23 trab z = -sb*cb*(1+ca); return z;}
d LT31W31 trab z = ca; return z;}
d LT31W32 trab z = sa*sb; return z;}
d LT31W33 trab z = sa*cb; return z;}
d (*LT31W[4][4])() = {F1,F0,F0,F0,F0,LT31W11,LT31W12,LT31W13,F0,LT31W21,LT31W22,LT31W23,F0,LT31W31,LT31W32,LT31W33};
/*LT31WI inverse of LT31W*/
d (*LT31WI[4][4])() = {F1,F0,F0,F0,F0,LT31W11,LT31W21,LT31W31,F0,LT31W12,LT31W22,LT31W32,F0,LT31W13,LT31W23,LT31W33};
/*Boosts*/
double LB100 (double x[]){double z; z=cosh(A);return z;}
double LB101 (double x[]){double z; z=sinh(A); return z;}
double (*LB1[4][4])() = {LB100,LB101,F0,F0,LB101,LB100,F0,F0,F0,F0,F1,F0,F0,F0,F0,F1};
double LB200 (double x[]){double z; z=cosh(B2);return z;}
double LB202 (double x[]){double z; z=sinh(B2); return z;}
double (*LB2[4][4])() = {LB200,F0,LB202,F0,F0,F1,F0,F0,LB202,F0,LB200,F0,F0,F0,F0,F1};
double LB300 (double x[]){double z; z=cosh(B3);return z;}
double LB303 (double x[]){double z; z=sinh(B3); return z;}
double (*LB3[4][4])() = {LB300,F0,F0,LB303,F0,F1,F0,F0,F0,F0,F1,F0,LB303,F0,F0,LB300};
/*Rotations */
d LR122(d x[]){d z; z = cos(B);return z;}
d LR123(d x[]){d z; z = - sin(B);return z;}
d LR132(d x[]){d z; z = sin(B);return z;}
d (*LR1[4][4])() ={F1,F0,F0,F0,F0,F1,F0,F0,F0,F0,LR122,LR123,F0,F0,LR132,LR122};
d LR211(d x[]){d z; z = cos(R2);return z;}
d LR213(d x[]){d z; z = sin(R2);return z;}
d LR231(d x[]){d z; z = -sin(R2);return z;}
d (*LR2[4][4])() ={F1,F0,F0,F0,F0,LR211,F0,LR213,F0,F0,F1,F0,F0,LR231,F0,LR211};
d LR311(d x[]){d z; z = cos(R3);return z;}
d LR312(d x[]){d z; z = -sin(R3);return z;}
d LR321(d x[]){d z; z = sin(R3);return z;}
d (*LR3[4][4])() ={F1,F0,F0,F0,F0,LR311,LR312,F0,F0,LR321,LR311,F0,F0,F0,F0,F1};
d (*Lor)();
void NoLor(void){fputs("No Lorentz Transformation Defined\n",stdout);}
d LorB1(d x[],int i, int j){d z ; z = LB1[i][j](x); return z;}
d LorB2(d x[],int i, int j){d z ; z = LB2[i][j](x); return z;}
d LorB3(d x[],int i, int j){d z ; z = LB3[i][j](x); return z;}
d LorR1(d x[],int i, int j){d z ; z = LR1[i][j](x); return z;}
d LorR2(d x[],int i, int j){d z ; z = LR2[i][j](x); return z;}
d LorR3(d x[],int i, int j){d z ; z = LR3[i][j](x); return z;}
d LorB1R1(d x[], int i, int j){d z = 0; int k; for(k=0;k<=3;k++) z += LB1[i][k](x) * LR1[k][j](x);
return z;}
d LorB1B2(d x[], int i, int j){d z = 0; int k; for(k=0;k<=3;k++) z += LB1[i][k](x) * LB2[k][j](x);
return z;}
d LorR1R3(d x[], int i, int j){d z = 0; int k; for(k=0;k<=3;k++) z += LR1[i][k](x) * LR3[k][j](x); return z;}
d Lor0(d x[], int i, int j){d z = 0.0; if(i==j) z = 1.0; return z;};
d (*LorX[7])()={Lor0, LorB1, LorB2, LorB3, LorR1, LorR2, LorR3};
d LorLT31W(d x[],int i, int j){d z ; z = LT31W[i][j](x); return z;}
d LorLTWR (d x[],int i, int j){d z=0;int k, l;
for(k=0;k<=3;k++) for(l=0;l<=3;l++)
z += LT31W[i][k](x)*LorX[J](x,k,l)*LT31WI[l][j](x);
return z;}
/*d LorLT21W(d x[],int i, int j){d z ; z = LT21W[i][j](x); return z;}
d LorLT23W(d x[],int i, int j){d z ; z = LT23W[i][j](x); return z;}*/
/*V is the tetrad W after Lorentz transformation*/
d V00 fz Lor(x,0,i) * W[i][0](x);} rz
d V01 fz Lor(x,0,i) * W[i][1](x);} rz
d V02 fz Lor(x,0,i) * W[i][2](x);} rz
d V03 fz Lor(x,0,i) * W[i][3](x);} rz
d V10 fz Lor(x,1,i) * W[i][0](x);} rz
d V11 fz Lor(x,1,i) * W[i][1](x);} rz
d V12 fz Lor(x,1,i) * W[i][2](x);} rz
d V13 fz Lor(x,1,i) * W[i][3](x);} rz
d V20 fz Lor(x,2,i) * W[i][0](x);} rz
d V21 fz Lor(x,2,i) * W[i][1](x);} rz
d V22 fz Lor(x,2,i) * W[i][2](x);} rz
d V23 fz Lor(x,2,i) * W[i][3](x);} rz
d V30 fz Lor(x,3,i) * W[i][0](x);} rz
d V31 fz Lor(x,3,i) * W[i][1](x);} rz
d V32 fz Lor(x,3,i) * W[i][2](x);} rz
d V33 fz Lor(x,3,i) * W[i][3](x);} rz
d (*V[4][4])()={V00,V01,V02,V03,V10,V11,V12,V13,V20,V21,V22,V23,V30,V31,V32,V33};
/*End of New part*/
d iAnaliticGG00(d x[]){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz
/*d iTG00(d x[]){d z; z = - 4*PI*r*r*gg00(x) * iAnaliticGG00(x) / K ; rz*/
d iEG(d x[]){d z; z = - 4*PI* V00(x) * (1 - mrs2) * (1 - mrs2) / K ; rz
double VgV (double (*V[][4])(), double (*U[][4])(), double x[], int j, int k)
{
int i;
char buf[30];
double z = 0;
for (i=0; i<=3; i++)
z += V[j][i](x) * g[i](x) * U[k][i](x);
return z;
}
double deriv(double (*f)(double x[]), double x[], double dx[], int i)
{double z;
double y2[4];
double y1[4];
int m;
for (m=0;m<=3;m++) {y1[m]=x[m];y2[m]=x[m];}
y2[i] = y2[i] + (dx[i]/2);
y1[i] = y1[i] - (dx[i]/2);
z = (f(y2) - f(y1))/dx[i];
return z;}
double derivM(double (*contderV)(),double (*V[][4])(), double x[], double dx[],int c,int j,int k,int l)
{double z;
d p;
d q;
int i;
double y1[4];
double y2[4];
for(i=0;i<=3;i++) {y1[i]=x[i];y2[i]=x[i];}
y2[l]=y2[l]+(dx[l]/2);
y1[l]=y1[l]-(dx[l]/2);
z = ((p=contderV(V,y2,dx,c,j,k)) - (q=contderV(V,y1,dx,c,j,k)))/dx[l];
return z;}
double GM (double (*contderV)(),double (*V[][4])(), d x[], d dx[], int c,int j,int k,int l)
{d z=0;
int i;
for(i=0;i<=3;i++)
z += G[j][l][i](x) * contderV(V,x,dx,c,i,k);
return z;}
d MG (d (*contderV)(), d (*V[][4])(), d x[], d dx[], int c,int j,int k,int l)
{d z=0;
int i;
for(i=0;i<=3;i++)
z += G[i][k][l](x) * contderV(V,x,dx,c,j,i);
return z;}
double GV (double (*V[][4])(), double x[], int c, int i, int j)
{double z = 0;
int m;
for(m=0;m<=3;m++)
z += G[i][j][m](x) * V[c][m](x); return z;}
double contderV (double (*V[][4])(double x[]), double x[], double dx[], int c, int j, int k)
{double z;
z = deriv(V[c][j], x, dx, k) + GV (V, x, c, j, k); return z;}
double mixderMV(d (*contderV)(d (*V[][4])(d x[]),d x[],d dx[],int c,int j,int k),d (*V[][4])(), d x[],d dx[],int c,int j,int k,int l)
{ d z;
z =derivM (contderV,V,x,dx,c,j,k,l) + GM(contderV,V,x,dx,c,j,k,l) - MG(contderV,V,x,dx,c,j,k,l);
return z;}
/*Ricci tensor when RM = - RG*/
double Rjl (d (*mixderMV)(),d (*V[][4])(),d x[],d dx[],int j,int l)
{d z=0;int c;int k;
for(c=0;c<=3;c++){for(k=0;k<=3;k++){
z += V[c][k](x) * ETA[c] * (mixderMV(contderV,V,x,dx,c,j,k,l) - mixderMV(contderV,V,x,dx,c,j,l,k));}}
rz
/*Pijk =Vai ETAab Vbj;k (i and j contravariant)*/
d Pijk (d (*V[][4])(), d x[], d dx[], int i, int j, int k)
{d z = 0; int c;
for(c=0;c<=3;c++)z += V[c][i](x) * ETA[c] * contderV(V, x, dx, c, j, k);
rz
/*Pijkl = Pijk;l*/
d Pijkl (d (*V[][4])(), d x[], d dx[], int i, int j, int k, int l){d z=0;d y=0;int m;
for(m=0;m<=3;m++) {y += G[i][m][l](x) * Pijk(V, x, dx, m, j, k)
+ G[j][m][l](x) * Pijk(V,x,dx,i,m,k) - G[m][k][l](x) * Pijk(V,x,dx,i,j,m);}
z =derivM (Pijk,V,x,dx,i,j,k,l) + y; rz
/*GGij = Gravitational part of Einstein tensor*/
/*RGij = Pkik;j - Pkij;k*/
void GGij(d GG[][4], d (*V[][4])(), d x[], d dx[])
{d z = 0; d y = 0; int j; int k; int m;
fjk for(m=0;m<=3;m++) z+=Pijkl(V,x,dx,m,j,m,k) - Pijkl(V,x,dx,m,j,k,m);
GG[j][k]= z; z=0;}}
for(j=0;j<=3;j++) y += GG[j][j]/2;
for(j=0;j<=3;j++) GG[j][j] = GG[j][j] - y;
}
#ifndef FOUR_COMPONENTS
double TGG(d GG[][4], d x[], d dx[])
{ d y = 0; int j; for(j=0;j<=3;j++) y += GG[j][j]; return y;}
#endif
/* double contderV (double (*V[][4])(double x[]), double x[], double dx[], int c, int j, int k)*/
/* RM2lm = Pijm Pjli - Piji Pjlm = Vai;i ETAaa Val;m - Vai;m ETAaa Val;i */
double RM2lm(double (*V[][4])(), double x[], double dx[],int l, int m)
{double z=0;int j; int k;
fjk z+= contderV(V,x,dx,j,k,k) * ETA[j] * contderV(V,x,dx,j,l,m) -
contderV(V,x,dx,j,k,m) *ETA[j] * contderV(V,x,dx,j,l,k);}}return z;}
#ifdef DEF1
double *GMAT(double dLp1, double GM[][4])/*Non used RM2lm - 1/2 delta RM2*/
{
int y = 0; int z;int i;int j;int k;
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
GM[j][k] = RM2lm(V,x,dx,j,k);
if(j == k) y += GM[j][k];}}
for(i=0;i<=3;i++) GM[i][i] = GM[i][i] - y/2;return GM;
}
/*VgVj = Vck gkk Vek;j*/
double VgVj (double (*V[][4])(), d x[], d dx[], int c, int e,int j)
{d z = 0;int i;
for(i=0;i<=3;i++)
z += V[c][i](x) * g[i](x) * contderV(V,x,dx,e,i,j);
return z;}
/*SRdgVVjj = (sqrt(-|g|) Vck Vek;j),j)*/
double SRdgVVjj (d (*f)(), d x[], d dx[], int c, int e)
{ d z = 0; d X1[4]; d X2[4]; int j;
for(j=0;j<=3;j++)
X1[j]=X2[j]=x[j];
for(j=0;j<=3;j++)
{
X1[j] = X1[j] - dx[j]/2;
X2[j] = X2[j] + dx[j]/2;
z += (sqrt(- dg(X2)) * f(V,X2,dx,c,e,j) * gg[j](X2) - sqrt(- dg(X1)) * f(V,X1,dx,c,e,j) * gg[j](X1))/dx[j] ;
}
return z;}
/* VgVjgj = (Vck Vek;j);j*/
double VgVjgj (d (*f)(), d x[], d dx[],int c, int e)
{d y = 0; d z = 0; d X1[4]; d X2[4]; int j; int k;
for(j=0;j<=3;j++)
X1[j]=X2[j]=x[j];
for(j=0;j<=3;j++)
{
X1[j] = X1[j] - dx[j]/2;
X2[j] = X2[j] + dx[j]/2;
y += (f(V,X2,dx,c,e,j) - f(V,X1,dx,c,e,j))/dx[j] * gg[j](x) ;
for(k=0;k<=3;k++)
z +=G[k][j][j](x) * f(V,x,dx,c,e,k) * gg[j](x);
}
z = y - z; return z;}
#endif DEF1
/*double mixderMV(d (*contderV)(d (*V[][4])(d x[]),d x[],d dx[],int c,int j,int k),d (*V[][4])(), d x[],d dx[],int c,int j,int k,int l)*/
void main (void)
{
int c;
int i;
int j;
int k;
int m;
int n;
double z;
double y;
double GM[4][4];
double G1[4][4]; /*FOUR COMPONENTS of the EINSTEIN Tensor*/
double G2[4][4];
double G3[4][4];
double G4[4][4];
double TG1; /* Auxiliar for Gx[4][4]*/
double TG2;
double TG3;
double TG4;
char ch[4];
static char buf[30];
char *buf2 = "?";
char *buf3 = "W1 enabled";
d GG[4][4];
d L1 = 7e10;
d L2 = 1e12;
d idx = 1e-15;
int graph = 0;/*Flag */
int LT = 1; /*Boost or Rotation (1,,,6) for graph*/
/*Save original tetrads*/
d (*W1[4][4])() ;
d (*Vx[4][4])() ;
fjk W1[j][k] = W[j][k];}}
fjk Vx[j][k] = V[j][k];}}
a1:
/*Ask for parameter values*/
graph = 0;
fputs("graph? (Y/N)",stdout);
gets(buf);
if (buf[0] == 'Y' || buf [0] == 'y') graph = 1;
fputs("rs = ",stdout);
fputs(gcvt(rs, 12, buf),stdout);fputs(" rs = ",stdout);
gets(buf);
if (buf[0] != '')
rs = atof(buf);
fputs("r = ",stdout);
fputs(gcvt(r, 12, buf),stdout);fputs(" r = ",stdout);
gets(buf);
if (buf[0] != '')
r = atof(buf);
fputs("dr = ",stdout);
fputs(gcvt(dx[1], 12, buf),stdout);fputs(" dr = ",stdout);
gets(buf);
if (buf[0] != '')
dx[1] = atof(buf);
fputs("dx[2] = ",stdout);fputs(gcvt(dx[2],12,buf),stdout);
fputs(" dx[2] = ",stdout);
gets(buf);
if (buf[0] != '')
dx[2] = atof(buf);
fputs("dx[3] = ",stdout);
fputs(gcvt(dx[3], 12, buf),stdout); fputs(" dx[3] = ",stdout);
gets(buf);
if (buf[0] != '')
dx[3] = atof(buf);
fputs("First Lorentz parameter = ", stdout); fputs(gcvt(Lp1, 12, buf),stdout);
fputs(" Lp1 = ",stdout);gets(buf); if(buf[0] != '') Lp1 = atof(buf);
fputs("Second Lorentz parameter = ", stdout); fputs(gcvt(Lp2, 12, buf),stdout);
fputs(" Lp2 = ",stdout);gets(buf); if(buf[0] != '') Lp2 = atof(buf);
fputs("Third Lorentz parameter = ", stdout); fputs(gcvt(Lp3, 12, buf),stdout);
fputs(" Lp3 = ",stdout);gets(buf); if(buf[0] != '') Lp3 = atof(buf);
fputs("Fourth Lorentz parameter = ", stdout); fputs(gcvt(Lp4, 12, buf),stdout);
fputs(" Lp4 = ",stdout);gets(buf); if(buf[0] != '') Lp4 = atof(buf);
fputs("Fifth Lorentz parameter = ", stdout); fputs(gcvt(Lp5, 12, buf),stdout);
fputs(" Lp5 = ",stdout);gets(buf); if(buf[0] != '') Lp5 = atof(buf);
fputs("6th Lorentz parameter = ", stdout); fputs(gcvt(Lp6, 12, buf),stdout);
fputs(" Lp6 = ",stdout);gets(buf); if(buf[0] != '') Lp6 = atof(buf);
fputs("Low limit of integration = ", stdout); fputs(gcvt(L1, 12, buf),stdout);
fputs(" L1 = ",stdout);gets(buf); if(buf[0] != '') L1 = atof(buf);
fputs("High limit of integration = ", stdout); fputs(gcvt(L2, 12, buf),stdout);
fputs(" L2 = ",stdout);gets(buf); if(buf[0] != '') L2 = atof(buf);
fputs("Integral increment = ", stdout); fputs(gcvt(idx, 12, buf),stdout);
fputs(" idx = ",stdout);gets(buf); if(buf[0] != '') idx = atof(buf);
/*Print parameter values*/
fputs("Lorentz transformation = ",stdout);fputs(buf2,stdout);fputs("\n",stdout);
fputs("rs = ",stdout); fputs(gcvt(rs,12,buf),stdout);
fputs(" r = ",stdout); fputs(gcvt(r,12,buf),stdout);
fputs(" dx[1] = ", stdout);fputs(gcvt(dx[1],12, buf), stdout);
fputs(" dx[2] = ", stdout);fputs(gcvt(dx[2],12, buf), stdout);
fputs(" dx[3] = ", stdout); fputs(gcvt(dx[3], 12, buf), stdout);fputs("\n",stdout);
fputs(" Lp1 = ",stdout); fputs(gcvt(Lp1,12,buf),stdout);
fputs(" Lp2 = ",stdout); fputs(gcvt(Lp2,12,buf),stdout);
fputs(" Lp3 = ",stdout); fputs(gcvt(Lp3,12,buf),stdout);
fputs(" Lp4 = ",stdout); fputs(gcvt(Lp4,12,buf),stdout);
fputs(" Lp5 = ",stdout); fputs(gcvt(Lp5,12,buf),stdout);
fputs(" Lp6 = ",stdout); fputs(gcvt(Lp6,12,buf),stdout);
fputs(" L1 = ",stdout); fputs(gcvt(L1,12,buf),stdout);
fputs(" L2 = ",stdout); fputs(gcvt(L2,12,buf),stdout);
fputs(" idx = ",stdout); fputs(gcvt(idx,12,buf),stdout);
fputs("\n",stdout);
fputs("rs = ",stdprn); fputs(gcvt(rs,12,buf),stdprn);
fputs(" r = ",stdprn); fputs(gcvt(r,12,buf),stdprn);
fputs(" dx[1] = ", stdprn);fputs(gcvt(dx[1],12, buf), stdprn);
fputs(" dx[2] = ", stdprn);fputs(gcvt(dx[2],12, buf), stdprn);
fputs(" dx[3] = ", stdprn); fputs(gcvt(dx[3], 12, buf), stdprn);
fputs("\n",stdprn);
fputs(" Lp1 = ",stdprn); fputs(gcvt(Lp1,12,buf),stdprn);
fputs(" Lp2 = ",stdprn); fputs(gcvt(Lp2,12,buf),stdprn);
fputs(" Lp3 = ",stdprn); fputs(gcvt(Lp3,12,buf),stdprn);
fputs(" Lp4 = ",stdprn); fputs(gcvt(Lp4,12,buf),stdprn);
fputs(" Lp5 = ",stdprn); fputs(gcvt(Lp5,12,buf),stdprn);
fputs(" Lp6 = ",stdprn); fputs(gcvt(Lp6,12,buf),stdprn);
fputs(" L1 = ",stdprn); fputs(gcvt(L1,12,buf),stdprn);
fputs(" L2 = ",stdprn); fputs(gcvt(L2,12,buf),stdprn);
fputs(" idx = ",stdprn); fputs(gcvt(idx,12,buf),stdprn);
fputs("\n",stdprn);
a0:
/*Menu of Lorentz transformations*/
fputs("Lorentz transformation = ",stdprn);fputs(buf2,stdprn);fputs("\n",stdprn);
fputs("Lorentz transformation = ",stdout);fputs(buf2,stdout);fputs("\n",stdout);
fputs("\nN No Lorentz 1 Boost1 2 Boost2 3 Boost3 4 Rot1 5 Rot2 6 Rot3 ENTER O.K.\n",stdout);
fputs("7 LT31W 8 LTWR 12 Boost1xBoost2 14 Rot1xRot3\n",stdout);
gets(buf);
if(buf[0] == '1'&& buf[1] == '4') goto R1R3;
if(buf[0] == '1'&& buf[1] == '2') goto BB;
if(buf[0] == '1') goto b1;
if(buf[0] == '2') goto b2;
if(buf[0] == '3') goto b3;
if(buf[0] == '4') goto r1;
if(buf[0] == '5') goto r2;
if(buf[0] == '6') goto r3;
if(buf[0] == '7') goto LTW31;
if(buf[0] == '8') goto LTWR;
if(buf[0] == 'N') goto nl;
if(buf[0] == '' && buf2[0] == '?') goto a0;
if(buf[0] == '') goto a00;
goto a0;
a00:
/*General Menu - The tetrads are contravariant and the tensors mixed*/
/*The Lorentz indeces are covariant*/
fputs("\n1 Paramters 2 V 3 VgV 4 Vcj,k 5 Vcj;k 6 Vcj;kl 7 Rjk 8 GMjk\n",stdout);
fputs("L Lorentz Matrix LT Lorentz Transformation W1 or W2 Tetrad 9 (VaiVbi;j);j\n",stdout);
fputs("10 GGjk 11 AnaliticGGjk 12 Contravariant TG00 13 Integral 14 FOUR COMPONENTS\n15 EXIT",stdout);
gets(buf);
if(buf[0] == 'L' && buf[1] == 'T') goto a0;
if(buf[0] == 'W' && buf[1] == '1') goto aW1;
if(buf[0] == 'W' && buf[1] == '2') goto aW2;
if(buf[0] == '1' && buf[1] == '0') goto a10;
if(buf[0] == '1' && buf[1] == '1') goto a11;
if(buf[0] == '1' && buf[1] == '2') goto a12;
if(buf[0] == '1' && buf[1] == '3') goto a13;
if(buf[0] == '1' && buf[1] == '4') goto a14;
if(buf[0] == '1' && buf[1] == '5') goto a15;
if(buf[0] == '1') goto a1;
if(buf[0] == '2') goto a2;
if(buf[0] == '3') goto a3;
if(buf[0] == '4') goto a4;
if(buf[0] == '5') goto a5;
if(buf[0] == '6') goto a6;
if(buf[0] == '7') goto a7;
if(buf[0] == '8') goto a8;
if(buf[0] == '9') goto a9;
if(buf[0] == 'L') goto L;
goto a00;
g0:
fputs("LT (0 - 6 Lorentz transformation = ",stdout);fputs(itoa(J,buf,10),stdout);
fputs(" LT = ",stdout);gets(buf);
if(buf[0] != '') LT = J = atoi(buf);
fputs("\n*Lorentz Paraneter[LT] = ",stdout);fputs(gcvt(*LP[LT],12,buf),stdout);
fputs(" *LP[LT] = ",stdout);gets(buf);
if(buf[0] != '') *LP[LT] = atof(buf);
fputs("\n*LP[",stdout);fputs(itoa(LT, buf, 10), stdout);fputs("] =",stdout);
fputs("\n*LP[",stdprn);fputs(itoa(LT, buf, 10), stdprn);fputs("] =",stdprn);
fputs(gcvt(*LP[LT],12,buf),stdout);fputs("\n",stdout);
fputs(buf,stdprn);fputs(" ",stdprn);
fputs("x[2] = ", stdout); fputs(gcvt(x[2],12,buf), stdout);
fputs(" x[2] = ", stdout); gets(buf);
if(buf[0] != '') x[2] = atof(buf);fputs("\n",stdout);
fputs("x[2] = ", stdprn); fputs(gcvt(x[2],12,buf),stdprn);fputs(" ",stdprn);
fputs("x[3] = ", stdout); fputs(gcvt(x[3],12,buf), stdout);
fputs(" x[3] = ", stdout); gets(buf);
if(buf[0] != '') x[3] = atof(buf);fputs("\n",stdout);
fputs("x[3] = ", stdprn); fputs(gcvt(x[3],12,buf),stdprn);fputs("\n",stdprn);
goto a00;
aW1:
fjk W[j][k] = W1[j][k];}}
buf3 = "W1 enabled";
buf2 = "?";
fputs(buf3,stdout);fputs("\n",stdout);
fputs(buf3,stdprn);fputs("\n",stdprn);
fputs("The tetrad is = \n",stdout);
fputs("The tetrad is = \n",stdprn);
fjk z = W[j][k](x);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
fputs("Please indicate Lorentz Transformation\n",stdout);
goto a0;
aW2:
fjk W[j][k] = W2[j][k];}}
buf3 = "W2 enabled";
buf2 = "?";
fputs(buf3,stdout);fputs("\n",stdout);
fputs(buf3,stdprn);fputs("\n",stdprn);
fputs("The tetrad is = \n",stdout);
fputs("The tetrad is = \n",stdprn);
fjk z = W[j][k](x);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
fputs("Please indicate Lorentz Transformation\n",stdout);
goto a0;
R1R3:
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
Lor = LorR1R3;LT = 4;/*For LP[LT]*/
buf2 = "Rotation1 x Rotation3";
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
fputs("Lor = \n",stdout);
fputs("Lor = \n",stdprn);
fjk z = Lor(x,j,k);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
goto a00;
LTWR:
buf2 = "LTWR\n"; LT = J;
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);
fputs(buf2,stdprn);
Lor = LorLTWR;
goto a00;
LTW31:
buf2 = "LT31W\n";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);
fputs(buf2,stdprn);
Lor = LorLT31W;
goto a00;
b1:
buf2 = "Boost1";LT =1;
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);
fputs(buf2,stdprn);
Lor = LorB1;
goto a00;
b2:
buf2 = "Boost2";LT = 2;
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorB2;
goto a00;
b3:
buf2 = "Boost3";LT = 3;
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorB3;
goto a00;
BB:
buf2 = "Boost1 x Boost2";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorB1B2;
goto a00;
r1:
buf2 = "Rotation on x1"; LT = 4;
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorR1;
goto a00;
r2:
buf2 = "Rotation on x2";LT = 5;
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorR2;
goto a00;
r3:
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
buf2 = "Rotation on x3";LT = 6;
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorR3;
goto a00;
nl:
Lor = NoLor;
fjk V[j][k] = W[j][k];}}
buf2 = "Lorentz transformation disabled";
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
goto a00;
L:
if(Lor == NoLor){NoLor(); goto a00;}
fputs("L = \n",stdout);
fputs("L = \n",stdprn);
fjk z = Lor(x,j,k);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
goto a00;
a2:
fputs(" k\n", stdout);
fputs("V = \n", stdout);
fputs(" a\n", stdout);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = V[j][k](x);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n", stdout);
}
goto a00;
a3:
#ifdef DEF1
fputs("\n VgV =\n", stdout);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = VgV(V, V, x, j, k);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n", stdout);
}
#endif DEF1
goto a00;
a4:
fputs("derivada Vcj,k = \n", stdout);
for(c=0;c<=3;c++)
{fputs("c = ", stdout); fputs(itoa(c, buf, 10),stdout);fputs("\n", stdout);
fjk z = deriv(V[c][j], x, dx, k);
fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}
fputs("\n",stdout);}}
goto a00;
a5:
for(c=0;c<=3;c++)
{
fputs(itoa(c, buf, 10), stdout);
fputs("covariant derivada Vcj;k = \n", stdout);
fjk z = contderV(V, x, dx, c, j, k);
fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}
fputs("\n",stdout);}
}
goto a00;
a6:
fputs("c = ",stdout); fputs(itoa (c, buf, 10), stdout);
gets(buf);
if (buf[0] != '')
c = atoi (buf);
fputs("c = ",stdout);
for(i=0;i<=3;i++)
{
fputs(itoa(c, buf, 10), stdout);fputs(", ",stdout);
fputs(itoa(i, buf, 10), stdout);
fputs(" Vcj;kl = \n", stdout);
fjk z = mixderMV(contderV, V, x, dx, c, i, j, k);
fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}
fputs("\n",stdout);}
}
goto a00;
/*Fuera de Servicio*/
#ifdef DEF2
fputs("\nGijk = \n ",stdout);
for(i=0;i<=3;i++){fjk if((z=G[i][j][k](x)) != 0) {c= i*100+j*10+k;fputs(itoa(c,buf,10),stdout);
fputs(" Gijk = ",stdout);fputs(gcvt(G[i][j][k](x),12,buf),stdout);
fputs(" ",stdout);}}}
fputs("\n",stdout);}
goto a0;
#endif DEF2
/*Fin de Fuera de Servicio*/
a7:
fputs(" j \n", stdout);
fputs("R = \n", stdout);
fputs(" l \n", stdout);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = Rjl(mixderMV,V,x,dx,j,k);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n", stdout);
}
goto a00;
a8:
y = 0;
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = RM2lm(V,x,dx,j,k);
GM[j][k] = z;
if(j == k) y += z;
}}
for(i=0;i<=3;i++) GM[i][i] = GM[i][i] - y/2;
fputs(" j \n",stdout);
fputs("GM =\n",stdout);
fputs(" k\n",stdout);
fputs("GM =\n",stdprn);
fjk fputs(gcvt(GM[j][k],12,buf),stdout); fputs(" ",stdout);
fputs(buf,stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
if(graph == 1) goto g0;
goto a00;
a9:
/*double VgVj (double (*V[][4])(), d x[], d dx[], int c, int e,int j)*/
/* double VgVjgj (d (*f)(), d x[], d dx[],int c, int e)*/
/*double SRdgVVjj (d (*V[][4])(), d x[], d dx[], int c, int e)*/
#ifdef DEF1
fputs("(VajVbj;k);k = \n",stdout);
fputs("(VajVbj;k);k = \n",stdprn);
fjk fputs(gcvt(VgVjgj(VgVj,x,dx,j,k),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
fputs("(sqrt(-g)VajVbj;k),k = \n",stdout);
fputs("(sqrt(-g)VajVbj;k),k = \n",stdprn);
fjk fputs(gcvt(SRdgVVjj(VgVj,x,dx,j,k),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
#endif DEF1
goto a00;
a10:
/*GGij = Gravitational part of Einstein Tensor*/
/*RGij = Pkjk;l - Pkjl;k*/
/*void GGij(d GG[][4], d (*V[][4])(), d x[], d dx[])*/
GGij(GG,V,x,dx);
fputs(" i\n",stdout);
fputs("GG = \n",stdout);
fputs(" j \n",stdout);
fputs("GGij = \n",stdprn);
fjk fputs(gcvt(GG[j][k],12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
#ifndef FOUR_COMPONENTS
fputs("Trace of GG = TGG = ", stdout);
fputs("Trace of GG = TGG = ", stdprn);
fputs(gcvt(TGG(GG, x, dx),12,buf), stdout);
fputs(buf, stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
#endif
if(graph == 1) goto g0;
goto a00;
a11:
fputs(" i\n",stdout);
fputs("AnaliticGG =\n",stdout);
fputs(" j\n",stdout);
fputs("AnaliticGGij = \n",stdprn);
fjk fputs(gcvt(AnaliticGG[j][k](),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
goto a00;
a12:
fputs("If r and rs are given in cm. TG00 results in gr/cm3\n",stdout);
fputs("K = ",stdout);
fputs("K = ",stdprn);
fputs(gcvt(K,12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("Contravariant GG00 = ",stdout);
fputs("Contravariant GG00 = ",stdprn);
fputs(gcvt(gg00(x)*AnaliticGG00(),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("Contravariant TG00 = ",stdout);
fputs("Contravariant TG00 = ",stdprn);
fputs(gcvt(TG00(),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
a13:
/*Integral*/
/*d iTG00(d x[]){d z; z = - 4*PI*r*r*gg00(x) * iAnaliticGG00(x) / K ; rz*/
/*d iAnaliticGG00(d x[]){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz*/
/*d integral (d (*f)(), d idx, d L1, d L2){d z=0; d y[4]; d dy; int i; int n;*/
/* y[1] = L1;*/
/* while(y[1] < L2){*/
/* y[1] += dy = L1*L1*idx/2;*/
/* z+= f(y) * 2*dy;} rz*/
fputs("Integral of EG = sqrt(-g) V00 TG00 = ",stdout);
fputs("Integral of EG = sqrt(-g) V00 TG00 = ",stdprn);
#ifndef integral
fputs("Analitical Calculation = 4PIrs/k + 8PIL1/k (sqrt(1 - rs/L1) - 1) =\n",stdout);
#endif
#ifdef integral
fputs(gcvt(integral(iEG(),idx,L1,L2),12,buf), stdout);fputs(" ",stdout);
#endif
#ifndef integral
fputs(gcvt(EG(rs,L1),12,buf), stdout);fputs(" ",stdout);
#endif
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("E/En = ",stdout);fputs("E/En = ",stdprn);
fputs(gcvt(EG(rs,L1)/En,12,buf), stdout);
fputs(gcvt(EG(rs,L1)/En,12,buf), stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
a14:
/*Pijk =Vai ETAab Vbj;k (i and j contravariant)*/
/*d Pijk (d (*V[][4])(), d x[], d dx[], int i, int j, int k)*/
/*Pijkl = Pijk;l*/
/*d Pijkl (d (*V[][4])(), d x[], d dx[], int i, int j, int k, int l)*/
#ifdef FOUR_COMPONENTS
/* FOUR_COMPONENTS of EINSTEIN TENSOR - m contravariant, n covariant */
fputs("FOUR COMPONENTS of the EINSTEIN TENSOR",stdout);fputs("\n",stdout);
fputs("FOUR COMPONENTS of the EINSTEIN TENSOR",stdprn);fputs("\n",stdprn);
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
G1[m][n] = G2[m][n] = G3[m][n] = G4[m][n] = 0;}}
TG1 = TG2 = TG3 = TG4 = 0;
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
G1[m][n] += Pijkl(V, x, dx, j, m, j, n);}}}
for (j=0;j<=3;j++){
TG1 += G1[j][j];}
for (j=0;j<=3;j++){
G1[j][j] = G1[j][j] - TG1/2;}
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
G2[m][n] += -(Pijkl(V, x, dx, j, m, n, j));}}}
for (j=0;j<=3;j++){
TG2 += G2[j][j];}
for (j=0;j<=3;j++){
G2[j][j] = G2[j][j] - TG2/2;}
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
G3[m][n] += Pijk(V, x, dx, k, j, n) * Pijk(V, x, dx, j, m, k);}}}}
for (j=0;j<=3;j++){
TG3 += G3[j][j];}
for (j=0;j<=3;j++){
G3[j][j] = G3[j][j] - TG3/2;}
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
G4[m][n] += -(Pijk(V, x, dx, k, j, k) * Pijk(V, x, dx, j, m, n));}}}}
for (j=0;j<=3;j++){
TG4 += G4[j][j];}
for (j=0;j<=3;j++){
G4[j][j] = G4[j][j] - TG4/2;}
fputs("G1jk =",stdprn);fputs("\n",stdprn);
fputs("G1jk =",stdout);fputs("\n",stdout);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G1[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout);}
fputs("G2jk =",stdout);fputs("\n",stdout);
fputs("G2jk =",stdprn);fputs("\n",stdprn);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G2[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout);}
fputs("G3jk =",stdout);fputs("\n",stdout);
fputs("G3jk =",stdprn);fputs("\n",stdprn);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G3[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout);}
fputs("G4jk =",stdout);fputs("\n",stdout);
fputs("G4jk =",stdprn);fputs("\n",stdprn);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G4[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout);}
#else FOUR_COMPONENTS
fputs("FOUR COMPONENTS non defined", stdout);
#endif FOUR_COMPONENTS
goto a00;
a15:
;
}
NPRNGRPH.C
/*NPRNGRPH.LIB*/
/*PRNGRPH.LIB with modified run_initgrph() and run_line_parameters() including
print option of the parameters*/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <alloc.h>
/*Codes*/
extern char IBMSpacing[10], Epsonspacing[9], spacing0[4], spacing1[5],
spacing2[5], spacing3[4], spacing4[4], Head[12]; extern int *Header;
extern char *spacing[5];
/*General Variables*/
extern char *Printline; extern char *Pline; extern int *Pcolumn;
extern unsigned char *Charac; extern unsigned long Pointcounter;
extern unsigned long Maxpoint; extern long lastcolumn; extern int ac;
extern int closeflag;
/*Graph Parameters*/
extern int Lines, Width, Pc, DDc; extern char *Graphpar;
/*Line Parameters*/
extern int full, doble; extern double maxX, maxY, minX, minY;
extern int Ptobell;
extern FILE *savefile;
/*Prototypes*/
void line_parameters(int full_line, int double_line, double max_X,
double min_X, double max_Y, double min_Y, int point_to_bell_ratio);
void initprngraph(unsigned lines, unsigned columns, unsigned margin,
int density);
void savegraph(char *filename);
void getgraph(char *filename);
void closegraph(void);
int redata(void);
void run_initgraph();
void run_line_parameters();
int Potencia(int basis, int exponent);
void printgraph(void);
void recpoint(double x, double y);
void newline(void);
void axis(double x, double y, double Xmark, double Ymark, int Type);
void initprngraph(unsigned lines, unsigned columns, unsigned margin, int density)
{
unsigned intmaxpoint;
/*Cancel previous initiation*/
if(closeflag != 0 ) closegraph();
if(lines > 80) {fputs("Lines has to be a positive integer less than 81\n",stdout);
_exit(0);}
if(columns>80) {fputs("Columns has to be a positive integer less than 81\n",stdout);
_exit(0);}
if(margin>80-columns) {fputs("Margin has to be a positive integer less than (81 - columns)\n",stdout);
_exit(0);}
if(density!=1&&density!=2&&density!=4) {fputs("Density = 1, 2 or 4 are the only allowed values\n",stdout);
_exit(0);}
Lines = (int) lines;
Width = (int) columns;
Pc = (int) margin;
DDc = density;
Printline = calloc(Width*6*DDc, 1);
if(Printline == NULL) {fputs("Insufficient Data Memory",stdout);_exit(0);}
intmaxpoint = (coreleft() - 1024)/4*4;
Pline = calloc( intmaxpoint, 1);
if(Pline == NULL) {fputs("Insufficient Data Memory",stdout);_exit(0);}
Pcolumn = (int *) (Pline + ( intmaxpoint/=4));
Charac = Pline + 3 * intmaxpoint;
Maxpoint = (long) intmaxpoint;
closeflag = 1;/*Allocated memory*/
}
void line_parameters(int full_line, int double_line, double max_X, double min_X,
double max_Y, double min_Y, int point_to_bell_ratio)
{
if(full_line!=0&&full_line!=1&&full_line!=2){
fputs("full_line = 0, 1 or 2 are the only allowed values\n",stdout); _exit(0);}
if(double_line!=0&&double_line!=1&&double_line!=2){
fputs("double_line = 0, 1 or 2 are the only allowed values\n",stdout); _exit(0);}
if(max_X<=min_X){
fputs("min_X < max_X is expected\n",stdout); _exit(0);}
/*1*/ if(min_Y == 0)minY = max_Y-(max_X-min_X)*Lines/Width*8.0/7.2;
else
/*2*/ {
/*3*/ if(max_Y<=min_Y){
/*3*/ fputs("min_Y < max_y is expected\n",stdout); _exit(0);}
/*2*/ else minY = min_Y;}
/*1*/
if(point_to_bell_ratio<0){
fputs("min_Y < a non-negative value is expected for point_to_bell_ratio\n",stdout);
_exit(0);}
full = full_line;
doble = double_line;
maxX = max_X;
minX = min_X;
maxY = max_Y;
}
void savegraph(char *filename){unsigned long i; int j;
savefile = fopen(filename, "wb");
if(savefile == NULL){fputs("I can't open the file",stdout); _exit(0);}
for(i=0;i<=4*Pointcounter;i++) putc(*(Pline+i),savefile);
for(j=0;j<=8;j++) putc(*(Graphpar+j), savefile);
fclose(savefile);
}
void getgraph(char *filename){unsigned long i; char a;
savefile = fopen(filename, "rb");
if(savefile == NULL){fputs("Unable to open the file\n",stdout);
_exit(0);}
Pointcounter = filelength(fileno(savefile))/4 - 2;
Printline = calloc(Width*6*DDc, 1);
Pline = (char *) calloc(4*(int) Pointcounter, 1);
Pcolumn = (int *) (Pline +(int) Pointcounter);
Charac = Pline + 3*(int)Pointcounter;
for(i=0;i<=4*Pointcounter;i++) *(Pline + i) = getc(savefile);
for(i=0;i<=8;i++){ *(Graphpar+i) = getc(savefile);
a = *(Graphpar +i);
closeflag = 1;/*Allocated memory*/ }
fclose(savefile);}
void closegraph(void){
free((void *) Pline);
free((void *) Printline);
lastcolumn = -1; Pointcounter = 0; closeflag = 0;}
int redata(void){void *psave;
psave = (void *) (Pline + (int) Pointcounter);
memcpy(psave,(void *) Pcolumn, 2* (int) Pointcounter);
psave=(void *)(Pline + 3* (int) Pointcounter);
memcpy(psave,(void *) Charac, (int) Pointcounter);
Pcolumn = (int *) (Pline + (int) Pointcounter);
Charac = Pline + 3* (int) Pointcounter;
free((void *) Pline);
if(malloc(4* (int) Pointcounter)!=Pline){
fputs("Allocation of permanent memory is forbiden between initprngraph and redata",stdout);_exit(0);}
closeflag = 1; }
void run_initgraph(){
char buf[8]; unsigned intmaxpoint; int saveDDc;
/*Cancels previous initiation*/
if(closeflag!=0) closegraph();
fputs("Graph Parameters\n",stdout);
fputs("<ENTER> to confirm present value\n",stdout);
fputs("<r> <ENTER> to return to the anterior parameter\n",stdout);
fputs("Lines = 1 to EXIT\n\n",stdout);
acx: fputs("Lines (Graphic's height - 1 Line = 1/9\") = ",stdout);
fputs(itoa(Lines,buf,10),stdout); fputs("\n",stdout);
fputs("Lines = ",stdout);if(*gets(buf)=='r')goto acx;
if(buf[0] != '')Lines = atoi(buf);if(Lines==1) _exit(0);
if(Lines>90 || Lines <=0) {fputs("It has to be a positive integer <= 90 \n",stdout);
goto acx;}
ac1: fputs("Width (Graphic's width in 1/10\") = ",stdout);
fputs(itoa(Width,buf,10),stdout); fputs("\n",stdout);
fputs("Width = ",stdout);if(*gets(buf)=='r')goto acx;
if(buf[0] != '')Width = atoi(buf);
if(Width>80 || Width<=0) {fputs("It has to be a positive integer <= 80 \n",stdout);
goto ac1;}
ac2: fputs("Margin (Graphic's left margin in 1/10\") = ",stdout);
fputs(itoa((Pc=(80-Width)/2),buf,10),stdout);fputs("\n",stdout);
fputs("Margin = ",stdout);if(*gets(buf)=='r')goto ac1;
if(buf[0] != '')Pc = atoi(buf);
if(Pc>80-Width||Pc<0) {fputs("It has to be a non-negative integer <= 80 - Width\n",stdout);
goto ac2;}
ac7: fputs("Density (number of points per surface's unit) (1,2 or 4) = ",stdout);
fputs(itoa(DDc,buf,10),stdout);fputs("\n",stdout);
fputs("Density = ",stdout);if(*gets(buf)=='r')goto ac2;
if(buf[0] != '')DDc = atoi(buf);fputs("\n",stdout);
if(DDc!=1&&DDc!=2&&DDc!=4) {fputs("1,2 and 4 are the only allowed values\n",stdout);goto ac7;}
/*Print Graph Parameters*/
fputs("\nLines = ",stdout); fputs(itoa(Lines,buf,10), stdout);
fputs(" Width = ",stdout); fputs(itoa(Width,buf,10), stdout);
fputs(" Margin = ",stdout); fputs(itoa(Pc,buf,10), stdout);
fputs(" Density = ",stdout); fputs(itoa(DDc,buf,10), stdout); fputs("\n",stdout);
Okey:
fputs("Okey?(y/n)\n",stdout); gets(buf); if(buf[0]=='n') goto acx;
if(buf[0]!='y') {fputs("y or n are tke unique accepted letters\n",stdout); goto Okey;}
Do:
fputs("\nShould I print these graph parameters? (y/n)",stdout);gets(buf);
if(buf[0]=='n') goto np1;
if(buf[0]!='y') {fputs("y or n are tke unique accepted letters\n",stdout); goto Do;}
fputs("Lines = ",stdprn); fputs(itoa(Lines,buf,10), stdprn);
fputs(" Width = ",stdprn); fputs(itoa(Width,buf,10), stdprn);
fputs(" Margin = ",stdprn); fputs(itoa(Pc,buf,10), stdprn);
fputs(" Density = ",stdprn); fputs(itoa(DDc,buf,10), stdprn); fputs("\n",stdprn);
np1:
/*Initgraph*/
Printline = calloc(Width*6*DDc, 1);
if(Printline == NULL) {fputs("Insufficient Data Memory",stdout);_exit(0);}
intmaxpoint = (coreleft() - 1024)/4*4;
Pline = calloc( intmaxpoint, 1);
if(Pline == NULL) {fputs("Insufficient Data Memory",stdout);_exit(0);}
Pcolumn = (int *) (Pline + ( intmaxpoint/=4));
Charac = Pline + 3 * intmaxpoint;
Maxpoint = (long) intmaxpoint;
closeflag = 1;/*Allocated memory*/
}
void run_line_parameters(){ char buf[8]; double save;
fputs("<ENTER> to confirm present value\n",stdout);
fputs("<r> <ENTER> to return to the anterior parameter\n\n",stdout);
goto ac0;
acc0: closegraph(); run_initgraph();
ac0: fputs("Maximum X (Value of X at the extreme right) = ",stdout);
fputs(gcvt(maxX,6,buf),stdout); fputs("\n",stdout);
fputs("Maximum X = ",stdout);
if(*gets(buf)=='r') goto acc0;
if(buf[0] != '')maxX = atof(buf);
ac4: fputs("Minimum X (Value of X at the extreme left) = ",stdout);
fputs(gcvt(minX,6,buf),stdout); fputs("\n",stdout);
fputs("Minimum X = ",stdout);if(*gets(buf)=='r')goto ac0;
if(buf[0] != '')minX = atof(buf);
if(minX>=maxX){fputs("A value smaller than Maximum X is expected\n",stdout);
goto ac4;}
ac5: fputs("Maximum Y (Value of Y at the top) = ",stdout);
fputs(gcvt(maxY,6,buf),stdout); fputs("\n",stdout);
fputs("Maximum Y = ",stdout);if(*gets(buf)=='r')goto ac4;
if(buf[0] != '') maxY = atof(buf);
ac6: fputs("Minimum Y (Value of Y at the bottom) = ",stdout);
minY = maxY-(maxX-minX)*Lines/Width*8.0/7.2;
fputs(gcvt(minY,6,buf),stdout); fputs("\n",stdout);
fputs("This value of Minimum Y corresponds to Y/X = 1\n",stdout);
fputs("Minimum Y = ",stdout);if(*gets(buf)=='r')goto ac5;
if(buf[0] != '') {save = minY; minY = atof(buf);}
if(minY>=maxY){fputs("A value smaller than Maximum Y is expected\n",stdout);
minY = save; goto ac6;}
ac8: fputs("Full line (Consecutive points joined by a straight line - 0, 1 or 2) = ",stdout);
fputs(itoa(full,buf,10),stdout);fputs("\n",stdout);
fputs("Full line = ",stdout);if(*gets(buf)=='r')goto ac6;
if(buf[0] != '')full = atoi(buf);
if(full!=1&&full!=0&&full!=2) {fputs("0, 1 and 2 are the only allowed values\n",stdout);
goto ac8;}
ac9: fputs("Line Width (0, 1 or 2) = ",stdout);
fputs(itoa(doble,buf,10),stdout);fputs("\n",stdout);
fputs("Line Width = ",stdout);if(*gets(buf)=='r')goto ac8;
if(buf[0] != '')doble = atoi(buf);
if(doble!=1&&doble!=0&&doble!=2) {fputs("0,1 and 2 are the only allowed values\n",stdout);
goto ac9;}
ac10: fputs("Ptobell (One bell for each group of Ptobell out-of-graph points) = ",stdout);
fputs(itoa(Ptobell,buf,10),stdout);fputs("\n",stdout);
fputs("0 for no bell\n",stdout);
fputs("Ptobell = ",stdout);if(*gets(buf)=='r')goto ac9;
if(buf[0] != '') Ptobell = atoi(buf);
/*Print Line Parameters*/
fputs("\nfull = ",stdout); fputs(itoa(full,buf,10), stdout);
fputs(" double = ",stdout); fputs(itoa(doble,buf,10), stdout);
fputs(" maxX = ",stdout); fputs(gcvt(maxX,10,buf), stdout);
fputs(" minX = ",stdout); fputs(gcvt(minX,10,buf), stdout); fputs("\n",stdout);
fputs("maxY = ",stdout); fputs(gcvt(maxY,10,buf), stdout);
fputs(" minY = ",stdout); fputs(gcvt(minY,10,buf), stdout);
fputs(" Ptobell = ",stdout); fputs(itoa(Ptobell,buf,10), stdout); fputs("\n",stdout);
Okey:
fputs("Okey?(y/n)\n",stdout); gets(buf); if(buf[0]=='n') goto ac0;
if(buf[0]!='y') {fputs("y or n are tke unique accepted letters\n",stdout); goto Okey;}
Do:
fputs("\nShould I print these line parameters? (y/n)",stdout);gets(buf);
if(buf[0]=='n') goto np2;
if(buf[0]!='y') {fputs("y or n are tke unique accepted letters\n",stdout); goto Do;}
fputs("\nfull = ",stdprn); fputs(itoa(full,buf,10), stdprn);
fputs(" double = ",stdprn); fputs(itoa(doble,buf,10), stdprn);
fputs(" maxX = ",stdprn); fputs(gcvt(maxX,10,buf), stdprn);
fputs(" minX = ",stdprn); fputs(gcvt(minX,10,buf), stdprn); fputs("\n",stdprn);
fputs("maxY = ",stdprn); fputs(gcvt(maxY,10,buf), stdprn);
fputs(" minY = ",stdprn); fputs(gcvt(minY,10,buf), stdprn);
fputs(" Ptobell = ",stdprn); fputs(itoa(Ptobell,buf,10), stdprn); fputs("\n",stdprn);
np2:;
}
int Potencia(int basis, int exponent){int j; int z=1;
for(j=1;j<=exponent;j++) z*=basis; return z;}
void printgraph(void){int i,j,k;int WIDTHH, PCC;
/* fputs (Epsonspacing,stdprn);*/
putc('\xD',stdprn);
/*RESET*/
putc('\x1B',stdprn);
putc('\x40',stdprn);
WIDTHH =Width*6*DDc;
PCC = Pc*6;
for(k=Lines*(DDc - DDc/4)-1;k>=0;k--){
for(i=0;i<Pointcounter;i++)
{
if(*(Pline + i) == k){
*(Printline + *(Pcolumn+i)) |= *(Charac + i);
if(*(Printline + *(Pcolumn+i)) == '\x1A')
*(Printline + *(Pcolumn+i))-=2;
}
}
if(k%(DDc - DDc/4)!=0)fputs(spacing[DDc-1],stdprn);
else fputs(spacing[DDc - 1/DDc],stdprn);
/*Pass over the margin*/
Header[1] = Pc*6;
for(i=0;i<4;i++) putc(Head[i],stdprn);
for(i=0;i<PCC;i++) putc(0,stdprn);
/*Print the line*/
*(Header+(2+DDc/2*4)/2) = WIDTHH;
for(i=0;i<4;i++) putc(Head[i+DDc/2*4],stdprn);
for(i=0;i<WIDTHH;i++) {
putc(*(Printline + i),stdprn);
*(Printline + i) = 0;
}
putc('\xA',stdprn); putc('\xD',stdprn);
}
putc('\x1B',stdprn); putc('\x40',stdprn);
}
void recpoint(double x, double y){long columna=0, line=0; int subline=0, z=0;
long newcolumn=0, Tl=0;char Flag = 0;
long maxdif, mindif, absmaxdif, newTl, dx, dy, j; int i;
long *L1; long *L2; extern unsigned long Maxpoint;
static long lastTl;
int DDc4, DDc8, DOBLEE, DOBLEL, FULLE, colDOBLEE; double MAXXMINX;
MAXXMINX = (maxX-minX)/(Width*6*DDc-1);
DDc4 = DDc - DDc/4;
if(x>maxX || x<minX ) {lastcolumn = -1;
if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
else
/*-2*/ {if(y>maxY || y<minY) {lastcolumn = -1;if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
else
/*-1*/ {
x-=minX; y-=minY;
columna = (long)(x/MAXXMINX+0.5);
line = (Tl=(long)(y/(maxY-minY)*(Lines*8*DDc4-1)+0.5))/8/DDc4*DDc4;/*Number of line multiple of DDc */
subline = (int) Tl%(8*DDc4); line += subline%DDc4;
subline/=DDc4;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) = line;
*(Pcolumn + (int) Pointcounter) = (int) columna;
*(Charac + (int) Pointcounter++) += (z=Potencia(2,subline));
newcolumn = columna;/*for full line*/
newTl = Tl;/* Total number of sublines*/
/*Double line*/
if(doble > 0)
/*0*/ {
DOBLEE = doble/2+DDc/4 +1;
DOBLEL = doble/2*DDc/4 +1;
/*1*/ if(columna >= DOBLEE) {
colDOBLEE = columna - DOBLEE;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) = line;
*(Pcolumn + (int) Pointcounter) = (int) columna - DOBLEE;
*(Charac + (int) Pointcounter++) += z;
/*1*/ } else {if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
/*5*/ if(Tl >= DOBLEL){
line = (Tl - DOBLEL)/8/DDc4*DDc4;/*Number of line multiple of DDc */
subline = ( (int) Tl - DOBLEL)%(8*DDc4); line += subline%DDc4;
subline/=DDc4;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) = line;
*(Pcolumn + (int) Pointcounter) = (int) columna;
*(Charac + (int) Pointcounter++) = Potencia(2,subline);
/*5*/ } else {if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
/*0*/ }
/*End of double line*/
/*Full line*/
/* FULLE = 1 + DDc/4 + doble + doble * (DDc/4);*/
FULLE = 1 + DDc/4;
if(full == 2) FULLE += DDc*2;
if(full>0 && lastcolumn >= 0)
/*00*/ { dx = newcolumn - lastcolumn; dy = newTl - lastTl;
if(labs(dx)>FULLE||labs(dy)>FULLE)
/*01*/ {
columna = lastcolumn; Tl = lastTl;
maxdif = dx; mindif = dy; L1 = &Tl; L2 = &columna;
if(labs(dy)>labs(dx))
{
maxdif = dy; mindif = dx; L1 = &columna; L2 = &Tl; }
absmaxdif = labs(maxdif);
for(j=FULLE;j < absmaxdif; j+=FULLE)
/*02*/ {
columna = lastcolumn; Tl = lastTl; Flag = 0;
*L1+= mindif*j/absmaxdif;
*L2+=maxdif/absmaxdif*j;
line = Tl/8/DDc4*DDc4;/*Multiple of DDc number of line*/
subline = (int) Tl%(8*DDc4); line += subline%DDc4;
subline/=DDc4;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) =(char) line;
*(Pcolumn + (int) Pointcounter) = (int) columna;
*(Charac + (int) Pointcounter++) +=(z= Potencia(2,subline));
/*Double-full line*/
/*0*/ if(doble > 0){
/*1*/ if(columna >=DOBLEE) {
colDOBLEE = columna - DOBLEE;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) = line;
*(Pcolumn + (int) Pointcounter) = (int) columna-DOBLEE;
*(Charac + (int) Pointcounter++) += z;
/*1 Taken from there*/} else {if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
/*5*/ if(Tl>=DOBLEL){
line = (Tl-DOBLEL)/8/DDc4*DDc4;/*Multiple of DDc number of line*/
subline = ( (int) Tl-DOBLEL)%(8*DDc4); line += subline%DDc4;
subline/=DDc4;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) = line;
*(Pcolumn + (int) Pointcounter) = (int) columna;
*(Charac + (int) Pointcounter++) += Potencia(2,subline);
/*5*/ } else {if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
/*1 } else {if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}*//*Taken from here*/
/*0*/ }
/*02*/ }
/*01*/ }
/*00*/ }
lastcolumn = newcolumn; lastTl = newTl;
/*-1*/ }
/*-2*/ }
}
/*End of recpoint */
void newline(void){ ac = Ptobell -1; recpoint(maxX+1, 0);}
void axis(double x, double y, double Xmark, double Ymark, int Type){double save1, save2, save3, save4;
double u, v, w, wFULLE, xmarke, ymarke;
int WIDTHH, FULLE, FULLEY, LINESS, savefull, save5, i;
save5 = doble; savefull=full;
save1 = maxX; save2 = maxY; save3 = minX; save4 = minY;
full = 0;
doble = 0;
WIDTHH = Width*6*DDc;
LINESS = Lines*8*(DDc-DDc/4);
FULLE = 1 + DDc/4;
FULLEY = 1 + DDc/4*DDc/2;
if (Type == 0){/*x, y and respective marks are coordinates*/
x-=minX; y-=minY;
v = (int)(x/(maxX-minX)*(WIDTHH-1)+0.5);
w = (int)(y/(maxY-minY)*(LINESS-1)+0.5);
xmarke =(int)(Xmark/(maxX-minX)*(WIDTHH-1)+0.5);
ymarke = (int)(Ymark/(maxY-minY)*(LINESS-1)+0.5);}
else {/* x and y are column and line*/
v = x; w = y; xmarke = Xmark; ymarke = Ymark;}
maxX =WIDTHH - 1; maxY =LINESS-1; minX = 0; minY = 0;
/*Axis X*/
u = 0.0;
wFULLE = w + FULLE;
for(i=0;i<WIDTHH;i+=FULLE){
recpoint(u,wFULLE);
recpoint(u,w);
if(xmarke!=0 && abs((int) (u-v)) % (int) xmarke < FULLE)
{ recpoint(u, wFULLE + FULLE); recpoint(u, w - FULLE); }
u+=FULLE;}
/*axis Y*/
newline();
u = 0.0;
for(i=0;i<LINESS;i+=FULLE){
recpoint(v+FULLEY,u);
recpoint(v,u);
if(ymarke!=0 && abs((int) (u-w)) % (int) ymarke < FULLE)
{ recpoint(v + 2 * FULLEY , u); recpoint(v - FULLEY, u); }
u+=FULLE;}
maxX = save1; maxY = save2; minX = save3; minY = save4;
full = savefull; doble = save5;}
/*End of NPRNGRPH.LIB*/
TY.C
הגדרות SEO
#include <stdio.h>
#include <math.h>
#include "tyh.h"
d rs=1e-2;
/*d nu trab z = log(mrs); rz*/
d nu trab z = log(1 - 1/(r*r*x[0])); rz
/*d lamda trab z = log(1/mrs); rz*/
d lamda trab z = log(1 - 1/(r*t)); rz
d ro trab z = x[1]/(t*t); rz
/*Used symbols t,r,a,b,rs,mrs,mrs2,trab,sa,sb,ca,cb,x[],V[][],g00*/
/*g11,g22,g33,g[],W00,..,W[][],V00,..,VB00,..,VB200,..,V[][],VB[][],VB2[][]*/
/*VRab00,..,VRab[][],XYtrabLB00,..,LB200,..,LB[][],LB2[][],LRab00,..,LRab[][]*/
/*Lor,LorB1R1,fjk,Lp1,Lp2,ggNN,gg[],d,rz,fz,PI,A,B,K,GN,gr*/
d Lp1 = 0; /* Lorentz parameter - Boosts*/
d Lp2 = 0;
d Lp3 = 0;
d Lp4 = 0;/*Rotations*/
d Lp5 = 0;
d Lp6 = 0;
int ETA[4] = {1,-1,-1,-1};
d x[4]={7.00, 1.00, 1.5707963 , 0.00};
d dx[4]={0.0001, 0.0001, 0.0001, 0.0001};
/*Covariant metric*/
d g00 trab z= exp(nu(x)); rz
d g11 trab z= -exp(lamda(x)); rz
d g22 trab z= - (ro(x) * ro(x)); rz
d g33 trab z= -(ro(x) * ro(x) * sa * sa); rz
d (*g[4])() = { g00, g11, g22, g33};
d dg(d x[]){d z; z = g00(x) * g11(x) * g22(x) * g33(x); rz
/*Contravariant metric*/
d gg00 trab z = exp(-nu(x)); rz
d gg11 trab z = -exp(-lamda(x)); rz
d gg22 trab z = -1/(ro(x) * ro(x)); rz
d gg33 trab z = - 1/(ro(x) * ro(x) * sa * sa); rz
d (*gg[4])() = {gg00,gg11,gg22,gg33};
/*Christoffel Symbols*/
d deriv(d (*f)(d x[]), d x[], d dx[], int i);
d G000 trab z = 0.5 * deriv(nu, x, dx, 0); rz
d G001 trab z = 0.5 * deriv(nu, x, dx, 1); rz
d G011 trab z = 0.5 * deriv(lamda, x, dx, 0) * exp(lamda(x)-nu(x)); rz
d G022 trab z = ro(x) * deriv(ro, x, dx, 0); rz
d G033 trab z = ro(x) * deriv(ro, x, dx, 0) * sa*sa; rz
d G100 trab z = 0.5 * deriv(nu, x, dx, 1) * exp(nu(x)-lamda(x)); rz
d G101 trab z = 0.5 * deriv(lamda, x, dx, 0); rz
d G111 trab z = 0.5 * deriv(lamda, x, dx, 1); rz
d G122 trab z = - ro(x) * deriv(ro, x, dx, 1) * exp(-lamda(x)); rz
d G133 trab z = - ro(x) * deriv(ro, x, dx, 1)*exp(-lamda(x))*sa*sa; rz
d G212 trab z = deriv(ro, x, dx, 1)/ro(x); rz
d G233 trab z = -sa * ca; rz
d G323 trab z = ca / sa; rz
d (*G[4][4][4])() = {G000,G001,F0,F0,G001,G011,F0,F0,F0,F0,G022,F0,F0,F0,F0,
G033,G100,G101,F0,F0,G101,G111,F0,F0,F0,F0,G122,F0,
F0,F0,F0,G133,F0,F0,F0,F0,F0,F0,G212,F0,F0,G221,F0,F0,F0,
F0,F0,G233,F0,F0,F0,F0,F0,F0,F0,G313,F0,
F0,F0,G323,F0,G331,G323,F0};
/* W or W1 is the original tetrad TX.C*/
d W00 trab z= exp(-nu(x)/2) * ch; rz
d W01 trab z= exp(-lamda(x)/2) * sh; rz
d W10 trab z= exp(-nu(x)/2) * sh * sa * cb; rz
d W11 trab z= exp(-lamda(x)/2) * sa * cb * ch; rz
d W12 trab z= 1/ro(x) * ca * cb; rz
d W13 trab z= -(1/(ro(x) * sa) * sb); rz
d W20 trab z= exp(-nu(x)/2) * sa * sb * sh; rz
d W21 trab z= exp(-lamda(x)/2) * sa * sb * ch; rz
d W22 trab z= 1/ro(x) *ca * sb; rz
d W23 trab z= 1/(ro(x) * sa) * cb; rz
d W30 trab z= exp(-nu(x)/2) * ca * sh; rz
d W31 trab z= exp(-lamda(x)/2) * ca * ch; rz
d W32 trab z= -(1/ro(x) * sa); rz
d (*W[4][4])() = {W00,W01,F0,F0,W10,W11,W12,W13,W20,W21,W22,W23,W30,W31,W32
,F0};
d AnaliticGG00(void){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz
d AnaliticGG11(void){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r) + (1 - 1/mrs2) * r
s/(r*r*r); rz
d AnaliticGG22(void){d z; z = 0.5 * (1 - 1/mrs2) * rs/(r*r*r); rz
d (*AnaliticGG[4][4])(void)={AnaliticGG00,F0,F0,F0,F0,AnaliticGG11,F0,F0,F0,F0,A
naliticGG22,F0,F0,F0,F0,AnaliticGG22};
/*W2 is the tetrad oriented as the spherical coordinates*/
d W200 trab z= exp(-nu(x)/2); rz
d W211 trab z= exp(-lamda(x)/2); rz
d W223 trab z= 1/(ro(x) * sa); rz
d W232 trab z= -1/ro(x); rz
d (*W2[4][4])() = {W200,F0,F0,F0,F0,W211,F0,F0,F0,F0,F0,W223,F0,F0,W232,F0};
d (*Lor)();
void NoLor(void){fputs("No Lorentz Transformation Defined\n",stdout);}
/*V is the tetrad W after Lorentz transformation*/
d V00 fz Lor(x,0,i) * W[i][0](x);} rz
d V01 fz Lor(x,0,i) * W[i][1](x);} rz
d V02 fz Lor(x,0,i) * W[i][2](x);} rz
d V03 fz Lor(x,0,i) * W[i][3](x);} rz
d V10 fz Lor(x,1,i) * W[i][0](x);} rz
d V11 fz Lor(x,1,i) * W[i][1](x);} rz
d V12 fz Lor(x,1,i) * W[i][2](x);} rz
d V13 fz Lor(x,1,i) * W[i][3](x);} rz
d V20 fz Lor(x,2,i) * W[i][0](x);} rz
d V21 fz Lor(x,2,i) * W[i][1](x);} rz
d V22 fz Lor(x,2,i) * W[i][2](x);} rz
d V23 fz Lor(x,2,i) * W[i][3](x);} rz
d V30 fz Lor(x,3,i) * W[i][0](x);} rz
d V31 fz Lor(x,3,i) * W[i][1](x);} rz
d V32 fz Lor(x,3,i) * W[i][2](x);} rz
d V33 fz Lor(x,3,i) * W[i][3](x);} rz
d (*V[4][4])()={V00,V01,V02,V03,V10,V11,V12,V13,V20,V21,V22,V23,V30,V31,V32,V33}
;
d iAnaliticGG00(d x[]){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz
/*d iTG00(d x[]){d z; z = - 4*PI*r*r*gg00(x) * iAnaliticGG00(x) / K ; rz*/
d iEG(d x[]){d z; z = - 4*PI* V00(x) * (1 - mrs2) * (1 - mrs2) / K ; rz
void main (void)
{
extern d (*LB1[4][4])();extern d (*LB2[4][4])();extern d (*LB3[4][4])();
extern d (*LR1[4][4])();extern d (*LR2[4][4])();extern d (*LR3[4][4])();
int c;
int i;
int j;
int k;
int m;
int n;
d z = 0;
d y = 0;
d GM[4][4];
d G1[4][4]; /*FOUR COMPONENTS of the EINSTEIN Tensor*/
d G2[4][4];
d G3[4][4];
d G4[4][4];
d TG1; /* Auxiliar for Gx[4][4]*/
d TG2;
d TG3;
d TG4;
static char buf[30];
char *buf2 = "?";
char *buf3 = "W1 enabled";
d GG[4][4];
d L1 = 7e10;
d L2 = 1e12;
d idx = 1e-15;
d zz[4];
/*Save original tetrads*/
d (*W1[4][4])() ;
d (*Vx[4][4])() ;
fjk W1[j][k] = W[j][k];}}
fjk Vx[j][k] = V[j][k];}}
a1:
/*Ask for parameter values*/
fputs("General Spherical Symmetric Metric gjk = { exp(nu),-exp(lamda),-ro2,-ro2s
in2 (teta)}\n",stdout);
fputs("Rjk=R1jk + R2jk = Rotor + Comutator\n",stdout);
fputs("Lorentz Rotations are here the inverse than in Q,R and S\n", stdout);
fputs("rs = ",stdout);
fputs(gcvt(rs, 12, buf),stdout);fputs(" rs = ",stdout);
gets(buf);
if (buf[0] != '')
rs = atof(buf);
fputs("r = ",stdout);
fputs(gcvt(r, 12, buf),stdout);fputs(" r = ",stdout);
gets(buf);
if (buf[0] != '')
r = atof(buf);
fputs("x[2] = ",stdout);
fputs(gcvt(x[2], 12, buf),stdout);fputs(" x[2] = ",stdout);
gets(buf);
if (buf[0] != '')
x[2] = atof(buf);
fputs("x[3] = ",stdout);
fputs(gcvt(x[3], 12, buf),stdout);fputs(" x[3] = ",stdout);
gets(buf);
if (buf[0] != '')
x[3] = atof(buf);
fputs("dr = ",stdout);
fputs(gcvt(dx[1], 12, buf),stdout);fputs(" dr = ",stdout);
gets(buf);
if (buf[0] != '')
dx[1] = atof(buf);
fputs("dx[2] = ",stdout);fputs(gcvt(dx[2],12,buf),stdout);
fputs(" dx[2] = ",stdout);
gets(buf);
if (buf[0] != '')
dx[2] = atof(buf);
fputs("dx[3] = ",stdout);
fputs(gcvt(dx[3], 12, buf),stdout); fputs(" dx[3] = ",stdout);
gets(buf);
if (buf[0] != '')
dx[3] = atof(buf);
fputs("First Lorentz parameter = ", stdout); fputs(gcvt(Lp1, 12, buf),stdout);
fputs(" Lp1 = ",stdout);gets(buf); if(buf[0] != '') Lp1 = atof(buf);
fputs("Second Lorentz parameter = ", stdout); fputs(gcvt(Lp2, 12, buf),stdout);
fputs(" Lp2 = ",stdout);gets(buf); if(buf[0] != '') Lp2 = atof(buf);
fputs("Third Lorentz parameter = ", stdout); fputs(gcvt(Lp3, 12, buf),stdout);
fputs(" Lp3 = ",stdout);gets(buf); if(buf[0] != '') Lp3 = atof(buf);
fputs("Fourth Lorentz parameter = ", stdout); fputs(gcvt(Lp4, 12, buf),stdout);
fputs(" Lp4 = ",stdout);gets(buf); if(buf[0] != '') Lp4 = atof(buf);
fputs("Fifth Lorentz parameter = PI/2 - x[2] ; ENTER ", stdout); /*fputs(gcvt(L
p5, 12, buf),stdout);*/
/*fputs(" Lp5 = ",stdout);*/
gets(buf);if(buf[0] != '') Lp5 = atof(buf);
fputs("6th Lorentz parameter = -x[3] ; ENTER ", stdout); /*fputs(gcvt(Lp6, 12,
buf),stdout);*/
/*fputs(" Lp6 = ",stdout);*/
gets(buf);if(buf[0] != '') Lp6 = atof(buf);
fputs("Low limit of integration = ", stdout); fputs(gcvt(L1, 12, buf),stdout);
fputs(" L1 = ",stdout);gets(buf); if(buf[0] != '') L1 = atof(buf);
fputs("High limit of integration = ", stdout); fputs(gcvt(L2, 12, buf),stdout);
fputs(" L2 = ",stdout);gets(buf); if(buf[0] != '') L2 = atof(buf);
fputs("Integral increment = ", stdout); fputs(gcvt(idx, 12, buf),stdout);
fputs(" idx = ",stdout);gets(buf); if(buf[0] != '') idx = atof(buf);
/*Print parameter values*/
fputs("Lorentz transformation = ",stdout);fputs(buf2,stdout);fputs("\n",stdout)
;
fputs("rs = ",stdout); fputs(gcvt(rs,12,buf),stdout);
fputs(" r = ",stdout); fputs(gcvt(r,12,buf),stdout);
fputs(" x[2] = ", stdout);fputs(gcvt(x[2],12, buf), stdout);
fputs(" x[3] = ", stdout); fputs(gcvt(x[3], 12, buf), stdout);fputs("\n",stdou
t);
fputs(" dx[1] = ", stdout);fputs(gcvt(dx[1],12, buf), stdout);
fputs(" dx[2] = ", stdout);fputs(gcvt(dx[2],12, buf), stdout);
fputs(" dx[3] = ", stdout); fputs(gcvt(dx[3], 12, buf), stdout);fputs("\n",std
out);
fputs(" Lp1 = ",stdout); fputs(gcvt(Lp1,12,buf),stdout);
fputs(" Lp2 = ",stdout); fputs(gcvt(Lp2,12,buf),stdout);
fputs(" Lp3 = ",stdout); fputs(gcvt(Lp3,12,buf),stdout);
fputs(" Lp4 = ",stdout); fputs(gcvt(Lp4,12,buf),stdout);
fputs(" Lp5 = ",stdout); fputs(gcvt(Lp5,12,buf),stdout);
fputs(" Lp6 = ",stdout); fputs(gcvt(Lp6,12,buf),stdout);
fputs(" L1 = ",stdout); fputs(gcvt(L1,12,buf),stdout);
fputs(" L2 = ",stdout); fputs(gcvt(L2,12,buf),stdout);
fputs(" idx = ",stdout); fputs(gcvt(idx,12,buf),stdout);
fputs("\n",stdout);
fputs("rs = ",stdprn); fputs(gcvt(rs,12,buf),stdprn);
fputs(" r = ",stdprn); fputs(gcvt(r,12,buf),stdprn);
fputs(" x[2] = ", stdprn);fputs(gcvt(x[2],12, buf), stdprn);
fputs(" x[3] = ", stdprn); fputs(gcvt(x[3], 12, buf), stdprn);fputs("\n",stdpr
n);
fputs(" dx[1] = ", stdprn);fputs(gcvt(dx[1],12, buf), stdprn);
fputs(" dx[2] = ", stdprn);fputs(gcvt(dx[2],12, buf), stdprn);
fputs(" dx[3] = ", stdprn); fputs(gcvt(dx[3], 12, buf), stdprn);
fputs("\n",stdprn);
fputs(" Lp1 = ",stdprn); fputs(gcvt(Lp1,12,buf),stdprn);
fputs(" Lp2 = ",stdprn); fputs(gcvt(Lp2,12,buf),stdprn);
fputs(" Lp3 = ",stdprn); fputs(gcvt(Lp3,12,buf),stdprn);
fputs(" Lp4 = ",stdprn); fputs(gcvt(Lp4,12,buf),stdprn);
fputs(" Lp5 = ",stdprn); fputs(gcvt(Lp5,12,buf),stdprn);
fputs(" Lp6 = ",stdprn); fputs(gcvt(Lp6,12,buf),stdprn);
fputs(" L1 = ",stdprn); fputs(gcvt(L1,12,buf),stdprn);
fputs(" L2 = ",stdprn); fputs(gcvt(L2,12,buf),stdprn);
fputs(" idx = ",stdprn); fputs(gcvt(idx,12,buf),stdprn);
fputs("\n",stdprn);
a0:
/*Menu of Lorentz transformations*/
fputs("Lorentz transformation = ",stdprn);fputs(buf2,stdprn);fputs("\n",stdprn);
fputs("Lorentz transformation = ",stdout);fputs(buf2,stdout);fputs("\n",stdout);
fputs("\nN No Lorentz 1 Boost1 2 Boost2 3 Boost3 4 Rot1 5 Rot2 6 Rot3 ENT
ER O.K.\n",stdout);
fputs("12 Rot3xRot2xBost1 14 Rot3xRot2\n",stdout);
gets(buf);
if(buf[0] == '1'&& buf[1] == '4') goto R3R2;
if(buf[0] == '1'&& buf[1] == '2') goto BB;
if(buf[0] == '1') goto b1;
if(buf[0] == '2') goto b2;
if(buf[0] == '3') goto b3;
if(buf[0] == '4') goto r1;
if(buf[0] == '5') goto r2;
if(buf[0] == '6') goto r3;
if(buf[0] == 'N') goto nl;
if(buf[0] == '' && buf2[0] == '?') goto a0;
if(buf[0] == '') goto a00;
goto a0;
a00:
/*General Menu - The tetrads are contravariant and the tensors mixed*/
/*The Lorentz indeces are covariant*/
fputs("\n1 Paramters 2 V 3 VgV 4 Vcj,k 5 AnaliticmixR2jk/2 6 Vcj;kl 7 Rjk
8 R2jk/2 ",stdout);
fputs("L Lorentz Matrix LT Lorentz Transformation W1 or W2 Tetrad 9 (VaiVbi;j
);j\n",stdout);
fputs("10 GGjk 11 AnaliticGGjk 12 Contravariant TG00?? 13 Integral?? 14 NULL
\n15 EXIT",stdout);
gets(buf);
if(buf[0] == 'L' && buf[1] == 'T') goto a0;
if(buf[0] == 'W' && buf[1] == '1') goto aW1;
if(buf[0] == 'W' && buf[1] == '2') goto aW2;
if(buf[0] == '1' && buf[1] == '0') goto a10;
if(buf[0] == '1' && buf[1] == '1') goto a11;
if(buf[0] == '1' && buf[1] == '2') goto a12;
if(buf[0] == '1' && buf[1] == '3') goto a13;
if(buf[0] == '1' && buf[1] == '4') goto a14;
if(buf[0] == '1' && buf[1] == '5') goto a15;
if(buf[0] == '1') goto a1;
if(buf[0] == '2') goto a2;
if(buf[0] == '3') goto a3;
if(buf[0] == '4') goto a4;
if(buf[0] == '5') goto a5;
if(buf[0] == '6') goto a6;
if(buf[0] == '7') goto a7;
if(buf[0] == '8') goto a8;
if(buf[0] == '9') goto a9;
if(buf[0] == 'L') goto L;
goto a00;
aW1:
fjk W[j][k] = W1[j][k];}}
buf3 = "W1 enabled";
buf2 = "?";
fputs(buf3,stdout);fputs("\n",stdout);
fputs(buf3,stdprn);fputs("\n",stdprn);
fputs("The tetrad is = \n",stdout);
fputs("The tetrad is = \n",stdprn);
fjk z = W[j][k](x);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
fputs("Please indicate Lorentz Transformation\n",stdout);
goto a0;
aW2:
fjk W[j][k] = W2[j][k];}}
buf3 = "W2 enabled";
buf2 = "?";
fputs(buf3,stdout);fputs("\n",stdout);
fputs(buf3,stdprn);fputs("\n",stdprn);
fputs("The tetrad is = \n",stdout);
fputs("The tetrad is = \n",stdprn);
fjk z = W[j][k](x);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
fputs("Please indicate Lorentz Transformation\n",stdout);
goto a0;
R3R2:
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
Lor = LorR3R2;
buf2 = "Rotation3 x Rotation2";
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
fputs("Lor = \n",stdout);
fputs("Lor = \n",stdprn);
fjk z = Lor(x,j,k);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
goto a00;
b1:
buf2 = "Boost1";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorB1;
goto a00;
b2:
buf2 = "Boost2";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorB2;
goto a00;
b3:
buf2 = "Boost3";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorB3;
goto a00;
BB:
buf2 = "R3xR2xB1";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorR3R2B1;
goto a00;
r1:
buf2 = "Rotation on x1";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorR1;
goto a00;
r2:
buf2 = "Rotation on x2";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorR2;
goto a00;
r3:
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
buf2 = "Rotation on x3";
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorR3;
goto a00;
nl:
Lor = NoLor;
fjk V[j][k] = W[j][k];}}
buf2 = "Lorentz transformation disabled";
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
goto a00;
#ifdef DEF2
/* Fuera de Servicio*/
z = mrs;
fputs("mrs = ",stdout);
fputs(gcvt(z, 12, buf), stdout);
fputs("\n", stdout);
z = mrs2;
fputs("mrs2 = ", stdout);
fputs(gcvt(z, 12, buf), stdout);
fputs("\n",stdout);
fputs("g = \n", stdout);
for (j=0;j<=3;j++){
z = g[j](x);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n\n", stdout);
#endif DEF2
/*Fin de "Fuera de Servicio"*/
L:
if(Lor == NoLor){NoLor(); goto a00;}
fputs("L = \n",stdout);
fputs("L = \n",stdprn);
fjk z = Lor(x,j,k);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
goto a00;
a2:
fputs(" k\n", stdout);
fputs("V = \n", stdout);
fputs(" a\n", stdout);
fputs("Vak =\n",stdprn);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
fputs(gcvt(V[j][k](x), 12, buf), stdout);
fputs(" ", stdout);
fputs(buf, stdprn);
fputs(" ", stdprn);
}
fputs("\n", stdout);
fputs("\n", stdprn);
}
goto a00;
a3:
fputs("\n VgV =\n", stdout);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = VgV(V, V, x, j, k);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n", stdout);
}
goto a00;
a4:
fputs("derivada Vcj,k = \n", stdout);
for(c=0;c<=3;c++)
{fputs("c = ", stdout); fputs(itoa(c, buf, 10),stdout);fputs("\n", stdout);
fjk z = deriv(V[c][j], x, dx, k);
fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}
fputs("\n",stdout);}}
goto a00;
a5:
fputs(" j\n",stdout);
fputs("AnaliticmixR2 /2 =\n",stdout);
fputs(" j\n",stdout);
fputs("AnaliticmixR2jj/2 = \n",stdprn);
zz[0] = AnaliticmixR200/2;zz[1]=AnaliticmixR211/2;zz[2]=AnaliticmixR222/2;zz[3]
=AnaliticmixR233/2;
for(j=0;j<=3;j++){
fputs(gcvt(zz[j],12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
}
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
a6:
fputs("c = ",stdout); fputs(itoa (c, buf, 10), stdout);
gets(buf);
if (buf[0] != '')
c = atoi (buf);
fputs("c = ",stdout);
for(i=0;i<=3;i++)
{
fputs(itoa(c, buf, 10), stdout);fputs(", ",stdout);
fputs(itoa(i, buf, 10), stdout);
fputs(" Vcj;kl = \n", stdout);
fjk z = mixderMV(contderV, V, x, dx, c, i, j, k);
fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}
fputs("\n",stdout);}
}
goto a00;
/*Fuera de Servicio*/
#ifdef DEF2
fputs("\nGijk = \n ",stdout);
for(i=0;i<=3;i++){fjk if((z=G[i][j][k](x)) != 0) {c= i*100+j*10+k;fputs(itoa(c,
buf,10),stdout);
fputs(" Gijk = ",stdout);fputs(gcvt(G[i][j][k](x),12,buf),stdout);
fputs(" ",stdout);}}}
fputs("\n",stdout);}
goto a0;
#endif DEF2
/*Fin de Fuera de Servicio*/
a7:
fputs(" j \n", stdout);
fputs("R = \n", stdout);
fputs(" l \n", stdout);
fputs("Rjl = \n", stdprn);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
fputs(gcvt(Rjl(mixderMV,V,x,dx,j,k), 12, buf), stdout);
fputs(buf,stdprn);
fputs(" ", stdout);
fputs(" ", stdprn);
}
fputs("\n", stdout);
fputs("\n", stdprn);
}
goto a00;
a8:
fputs(" j \n",stdout);
fputs("R2 /2 =\n",stdout);
fputs(" k\n",stdout);
fputs("R2/2 =\n",stdprn);
fjk fputs(gcvt(R2lm(V,x,dx,j,k)/2,12,buf),stdout); fputs(" ",stdout);
fputs(buf,stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
goto a00;
a9:
fputs("(VajVbj;k);k = \n",stdout);
fputs("(VajVbj;k);k = \n",stdprn);
fjk fputs(gcvt(VgVjgj(VgVj,x,dx,j,k),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
fputs("(sqrt(-g)VajVbj;k),k = \n",stdout);
fputs("(sqrt(-g)VajVbj;k),k = \n",stdprn);
fjk fputs(gcvt(SRdgVVjj(VgVj,x,dx,j,k),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
goto a00;
a10:
/*GGij = Gravitational part of Einstein Tensor*/
/*RGij = Pkjk;l - Pkjl;k*/
/*void GGij(d GG[][4], d (*V[][4])(), d x[], d dx[])*/
GGij(GG,V,x,dx);
fputs(" i\n",stdout);
fputs("GG = \n",stdout);
fputs(" j \n",stdout);
fputs("GGij = \n",stdprn);
fjk fputs(gcvt(GG[j][k],12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
#ifndef FOUR_COMPONENTS
fputs("Trace of GG = TGG = ", stdout);
fputs("Trace of GG = TGG = ", stdprn);
fputs(gcvt(TGG(GG, x, dx),12,buf), stdout);
fputs(buf, stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
#endif
goto a00;
a11:
fputs(" i\n",stdout);
fputs("AnaliticGG =\n",stdout);
fputs(" j\n",stdout);
fputs("AnaliticGGij = \n",stdprn);
fjk fputs(gcvt(AnaliticGG[j][k](),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
goto a00;
a12:
fputs("If r and rs are given in cm. TG00 results in gr/cm3\n",stdout);
fputs("K = ",stdout);
fputs("K = ",stdprn);
fputs(gcvt(K,12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("Contravariant GG00 = ",stdout);
fputs("Contravariant GG00 = ",stdprn);
fputs(gcvt(gg00(x)*AnaliticGG00(),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("Contravariant TG00 = ",stdout);
fputs("Contravariant TG00 = ",stdprn);
fputs(gcvt(TG00(),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
a13:
/*Integral*/
/*d iTG00(d x[]){d z; z = - 4*PI*r*r*gg00(x) * iAnaliticGG00(x) / K ; rz*/
/*d iAnaliticGG00(d x[]){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz*/
/*d integral (d (*f)(), d idx, d L1, d L2){d z=0; d y[4]; d dy; int i; int n;*/
/* y[1] = L1;*/
/* while(y[1] < L2){*/
/* y[1] += dy = L1*L1*idx/2;*/
/* z+= f(y) * 2*dy;} rz*/
fputs("Integral of EG = sqrt(-g) V00 TG00 = ",stdout);
fputs("Integral of EG = sqrt(-g) V00 TG00 = ",stdprn);
#ifndef integral
fputs("Analitical Calculation = 4PIrs/k + 8PIL1/k (sqrt(1 - rs/L1) - 1) =\n",st
dout);
#endif
#ifdef integral
fputs(gcvt(integral(iEG(),idx,L1,L2),12,buf), stdout);fputs(" ",stdout);
#endif
#ifndef integral
fputs(gcvt(EG(rs,L1),12,buf), stdout);fputs(" ",stdout);
#endif
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("E/En = ",stdout);fputs("E/En = ",stdprn);
fputs(gcvt(EG(rs,L1)/En,12,buf), stdout);
fputs(gcvt(EG(rs,L1)/En,12,buf), stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
a14:
goto a00;
a15:
TEST.C
/*Analitic Calculations and Graphics of "Experimental ..."*/
/* Invariant and Covariant Integrals*/
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
/*#include <alloc.h>*/
#include "prngrph.h"
#define mrs (1.0 - 1.0/r)
#define mrs2 sqrt(mrs)
#define d double
#define rz return z;}
#define PI 3.1415927
#define K (8*PI*7.425*1e-29) /*GN/c2 Einstein Gravitational Constant in cm/gr*/
#define Gn 7.425e-29
#define M (1/(2*Gn))
#define R r /*Source Radious */
#define EnM (-0.25/R) /*Newton Gravitational Energy per unite mass*/
#define EgM (2*(log(2*mrs2/(1+mrs2)) + 1/(1+mrs2) - 0.5)) /* Conserved Gravitati
ona Energy per unite mass Integral*/
#define EmgM (-(1-mrs2)/(1+mrs2))/*Invariant Gravitational Energy per unite mass
Integral*/
#define MgM (2*(1/(1+mrs2)+log(1+mrs2)-0.5-log(2)))/*Covariant Gravitational En
ergy per unite mass Integral*/
#define Ve sqrt(1.0/r)
#define DEg (log(4*mrs/(1+mrs2)/(1+mrs2)) + 2/mrs2 - 1/mrs -1)/*dEg/dM*/
/*#define V sqrt(1-(1+mrs*DEg)*(1+mrs*DEg))*/
#define V sqrt(1-(1+mrs*DEg)*(1+mrs*DEg)/mrs)
void main (void)
{
int i;
int j;
double x;
double y;
double y1;
double r=1;
double z;
double u;
double v;
double r0=0.0; double EmgM0=-2.0;
double BeginX = 1.01;
double EndX = 5.2;
int full1 = 1;
int doble1 = 0;
int j1 = 1000;
int full2 = 2;
int doble2 = 0;
int j2 = 50;
int full3 = 0;
int doble3 = 2;
int j3 = 2000;
int full4 = 1;
int doble4 = 0;
int j4 = 50;
int full5 = 0;
int doble5 = 0;
int j5 = 50;
static char buf[30];
/*Initiate Graph*/
DDc=0;
np0:
fputs("\n1 Do Graph 2 Get Graph 3 Analitical Calculations E EXIT\n",stdout);
gets(buf);
if(buf[0]=='1') goto np1;
if(buf[0]=='2') goto GD;
if(buf[0]=='3') goto a1;
if(buf[0]=='E') goto E;
fputs("The only accepted characters are 1, 2, 3 or E",stdout); goto np0;
np1:
run_initgraph();
/*Initiate line parameters*/
np2:
run_line_parameters();
np3:
fputs("\nGraph Menu\n",stdout);
fputs("\n1 Conserved Eg/M and En/M 2 Velocities \n",stdout);
fputs("3 Graph Parameters 4 Line Parameters C Analitic Calculation E Exit\n",s
tdout); gets(buf);
if(buf[0]=='1') goto l1;
if(buf[0]=='2') goto l2;
if(buf[0]=='3') {closegraph(); goto np1;}
if(buf[0]=='4') goto np2;
if(buf[0]=='C') {closegraph(); goto a1;}
if(buf[0]=='E') {closegraph(); goto E;}
fputs("\nDigits 1 to 4, and C and E are the only accepted entries\n",stdout);
goto np3;
/*Plotting*/
l1:
/*Conserved Relativistic Gravitational Energy for Unit Mass */
fputs("\nGraph of the Conserved Gravitational Energy Eg/M and Newton Gravitation
al Energy\n",stdout);
fputs("En/M per Unit Mass against R/2MG\n",stdout);
fputs("\nLine Parameters for Eg/M (Contravariant)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("Begin with R/2MG = ",stdout);fputs(gcvt(x=BeginX,10,buf),stdout);
fputs(" End with R/2MG = ",stdout); fputs(gcvt(y1=EndX,10,buf),stdout);
fputs("\nfull = ",stdout); fputs(itoa(full=full1,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble1,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=j1,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l11;
fputs("<ENTER> to confirm previous value\n",stdout);
again1:
fputs("Begin with R/2MG = ",stdout);gets(buf);if(buf[0]!='')BeginX=x=atof(buf);
if(x<minX || x>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again1;}
again2:
fputs("End with R/2MG = ",stdout);gets(buf);if(buf[0]!='')EndX=y1=atof(buf);
if(y1<minX || y1>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again2;}
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full1=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble1=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=j1=atoi(buf);
l11:
fputs("\nShould I print first line parameters (Eg/M)?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l12;
fputs("\nFirst Line Parameters (Eg/M)\n",stdprn);
fputs("Begin with R/2MG = ",stdprn);fputs(gcvt(BeginX,10,buf),stdprn);
fputs("End with R/2MG = ",stdprn);fputs(gcvt(EndX,10,buf),stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l12:
for(i=0;i<j;i++){
r = x + (y1-1)/(j-1)*i;
recpoint(r, EgM);}
newline();
/*Axis*/
Axis:
fputs("\nAxis Parameters\n",stdout);
fputs("\nAxis?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l13;
fputs("Y axis coordinate = ",stdout);fputs(gcvt(x=0.0,10,buf),stdout);
fputs(" Y axis coordinate = ",stdout);gets(buf);
if(buf[0]!='')x = atof(buf);
fputs("X axis abscissa = ",stdout);fputs(gcvt(y=0.0,10,buf),stdout);
fputs(" X axis abscissa = ",stdout);gets(buf);
if(buf[0]!='')y = atof(buf);
fputs("Xmark = ",stdout); fputs(gcvt(u=1.0,10,buf),stdout);
fputs(" Xmark = ",stdout);gets(buf);
if(buf[0]!='')u = atof(buf);
fputs("Ymark = ",stdout);fputs(gcvt(v=0.25,10,buf),stdout);
fputs(" Ymark = ",stdout);gets(buf);
if(buf[0]!='')v = atof(buf);
/*Print Axes Parameters*/
fputs("Yaxis = ",stdout); fputs(gcvt(x,10,buf),stdout);
fputs(" Xaxis = ",stdout); fputs(gcvt(y,10,buf),stdout);
fputs(" Xmark = ",stdout); fputs(gcvt(u,10,buf),stdout);
fputs(" Ymark = ",stdout); fputs(gcvt(v,10,buf),stdout);
fputs("\nShould I print the axes parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l15;
fputs("\nYaxis = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Xaxis = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Xmark = ",stdprn); fputs(gcvt(u,10,buf),stdprn);
fputs(" Ymark = ",stdprn); fputs(gcvt(v,10,buf),stdprn);fputs("\n",stdprn);
l15:
axis(x, y, u, v, 0);
newline();
l13:
redata();/*Reduces the data*/
fputs("\nEnter Filename to Save or nn\n",stdout); gets(buf);
if(buf[0]=='n'&&buf[1]=='n') goto l16;
savefile =(FILE *) buf;
savegraph(savefile);
l16:
printgraph();
closegraph();
goto np0;
GD:
fputs("\nEnter Filename to Print or nn\n",stdout); gets(buf);
if(buf[0]=='n'&&buf[1]=='n') goto np0;
savefile = (FILE *) buf;
getgraph(savefile);
printgraph();
closegraph();
goto np0;
l2:
/*END GRAPH()*/
a1:
fputs("FOUNDATI analitical calculations\n", stdout);
/*Ask for parameter values*/
/* fputs("rs = ",stdout);
fputs(gcvt(rs, 12, buf),stdout);fputs(" rs = ",stdout);
gets(buf);
if (buf[0] != '')
rs = atof(buf);
fputs(" R/rs = ", stdout); fputs(gcvt(r, 12, buf),stdout);
fputs(" R/rs = ",stdout);gets(buf); if(buf[0] != '') r = atof(buf);*/
/*Print parameter values*/
/* fputs("rs = ",stdout); fputs(gcvt(rs,12,buf),stdout);
fputs("rs = ",stdprn); fputs(buf,stdprn);
fputs(" R/rs = ",stdout); fputs(gcvt(R,12,buf),stdout);
fputs(" R/rs = ",stdprn); fputs(buf,stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);*/
a00:
fputs("\n1 Paramters 2 Velocity 3 v(dEg/dM) 4 Contravariant Eg/M 5 Invariant E
mg/M\n",stdout);
fputs("6 Covariant Mg/M E EXIT\n",stdout);
gets(buf);
if(buf[0] == '1') goto a1;
if(buf[0] == '2') goto a2;
if(buf[0] == '3') goto a3;
if(buf[0] == '4') goto a4;
if(buf[0] == '5') goto a5;
if(buf[0] == '6') goto a6;
if(buf[0] == 'E') goto E;
goto a00;
a2:
/*Velocities*/
fputs("\nr/rs = ",stdout);
fputs(gcvt(r,12,buf),stdout);
fputs(" r/rs = ",stdout); gets(buf);if(buf[0]!='')r=atof(buf);
fputs("\nr/rs = ",stdprn);
fputs(buf,stdprn);
fputs("\nE.C. velocity V = ",stdout);fputs(gcvt(V,10,buf),stdout);
fputs(" E.C. velocity V = ",stdprn);fputs(buf,stdprn);
fputs(" G.P. velocity Ve = ",stdout);fputs(gcvt(Ve,10,buf),stdout);
fputs(" G.P. velocity Ve = ",stdprn);fputs(buf,stdprn);fputs("\n",stdprn);
goto a00;
a3:
fputs("EMPTY\n", stdout);
goto a00;
a4:
/*Conserved Gravitational Energy Integral*/
fputs("Eg/M = 2(ln(2 mrs2/(1+mrs2)) + 1/(1+mrs2) - 1/2)\n",stdout);
fputs("Eg/M = ", stdout);fputs("Eg/M = ", stdprn);
fputs(gcvt(EgM,12,buf),stdout);fputs(buf,stdprn);
fputs(" En/M = ", stdout);fputs(" En/M = ", stdprn);
fputs(gcvt(EnM,12,buf),stdout);fputs(buf,stdprn);
fputs("\n", stdout);fputs("\n", stdprn);
goto a1;
a5:
/* Invariant Gravitational Energy Integral*/
fputs("Emg/M = - (1 - mrs2)/(1 + mrs2)\n",stdout);
fputs("Emg/M = ", stdout);fputs("Emg/M = ", stdprn);
fputs(gcvt(EmgM,12,buf),stdout);fputs(buf,stdprn);
fputs(" En/M = ", stdout);fputs(" En/M = ", stdprn);
fputs(gcvt(EnM,12,buf),stdout);fputs(buf,stdprn);
fputs("\n", stdout);fputs("\n", stdprn);
goto a1;
a6:
/*Covariant Gravitational Energy Integral*/
fputs("Mg/M = 2 (1/1+mrs2 + ln(1+mrs2) - 0.5 - ln 2) \n",stdout);
fputs("Mg/M = ", stdout);fputs("Mg/M = ", stdprn);
fputs(gcvt(MgM,12,buf),stdout);fputs(buf,stdprn);
fputs(" En/M = ", stdout);fputs(" En/M = ", stdprn);
fputs(gcvt(EnM,12,buf),stdout);fputs(buf,stdprn);
fputs("\n", stdout);fputs("\n", stdprn);
goto a1;
RX.C
פתיחת/סגירת תפריט: הגדרות SEO
/*R modified 28.5.91 for "Experimental ..." special calculations*/
#include <stdio.h>
#include <math.h>
#define DEF1
#define mrs (1 - rs/x[1])
#define mrs2 sqrt(mrs)
#define Z0 (double x[]){return 0;}
#define Z1 (double x[]){return 1;}
#define trab (double x[]){double z=0;
#define sa sin(x[2])
#define sb sin(x[3])
#define ca cos(x[2])
#define cb cos(x[3])
#define V(i,j) (*V[i][j])(double x[])
#define t x[0]
#define r x[1]
#define a x[2]
#define b x[3]
#define fjk for(j=0;j<=3;j++){for(k=0;k<=3;k++){
#define d double
#define rz return z;}
#define fz (double x[]){double z=0;int i;for(i=0;i<=3;i++){ z+=
#define PI 3.1415927
#define A (Lp1/x[1]) /*Lorentz parameters Boosts*/
#define B2 (Lp2/x[1])
#define B3 (Lp3/x[1])
#define B (Lp4/x[1]) /*Rotations*/
#define R2 (Lp5/x[1])
#define R3 (Lp6/x[1])
#define K (8*PI*7.425*1e-29) /*GN/c2 Einstein Gravitational Constant in cm/gr*/
#define Gn 7.425e-29
#define M (rs/(2*Gn))
/*#define En (-0.5*Gn*M*M/L1) /*Newton Gravitational Energy*/*/
#define AnaliticmixRM00 ((1/mrs2 - 1) * rs/(x[1]*x[1]*x[1]))
#define AnaliticmixRM11 0
#define AnaliticmixRM22 (0.5*(1/mrs2 - 1) * rs/(x[1]*x[1]*x[1])-(1-mrs2)*(1-mrs2
)/(x[1]*x[1]))
#define AnaliticmixRM33 AnaliticmixRM22
/*Added 28.5.91*/
#define AnaliticontRM00 mrs * ((1/mrs2 - 1) * rs/(x[1]*x[1]*x[1]))
#define AnaliticontEg0 (- rs/Gn/2 * (log(2*mrs2/(1+mrs2)) + 1/mrs2 - 1))
/*End Added*/
#define En (-0.5*Gn*M*M/r) /*Newton Gravitational Energy*/
#define Er (0.5*M*log(2*mrs/(0.5+0.5*mrs+sqrt(mrs)))) /*Relativistic integral gr
avitational energy kTg = Rg/2*//*Used symbols t,r,a,b,rs,mrs,mrs2,Z0,trab,sa,sb,
ca,cb,x[],V[][],V(i,j),g00*/
/*g11,g22,g33,g[],W00,..,W[][],V00,..,VB00,..,VB200,..,V[][],VB[][],VB2[][]*/
/*VRab00,..,VRab[][],XYtrabLB00,..,LB200,..,LB[][],LB2[][],LRab00,..,LRab[][]*/
/*Lor,LorB1R1,fjk,Lp1,Lp2,ggNN,gg[],d,rz,fz,PI,A,B,K,GN,gr*/
#ifndef integral
d EG(d rs, d Lp1) { d z; z = 4*PI*rs/K + (8*PI*Lp1/K)*(sqrt(1 - rs/Lp1) - 1); r
eturn z;}
#endif
d Lp1 = 0; /* Lorenz parameter - Boosts*/
d Lp2 = 0;
d Lp3 = 0;
d Lp4 = 0;/*Rotations*/
d Lp5 = 0;
d Lp6 = 0;
int ETA[4] = {1,-1,-1,-1};
double x[4]={7.00, 1.00, 1.5708 , 0.00};
double dx[4]={0.1, 0.0001, 0.0001, 0.0001};
double rs=1e-2;
/*Covariant metric*/
double g00 trab z= mrs ; return z;}
double g11 trab z= -(1/mrs) ; return z;}
double g22 trab z= - (r * r); return z;}
double g33 trab z= -(r * r * sa * sa); return z;}
double (*g[4])() = { g00, g11, g22, g33};
d dg(d x[]){d z; z = g00(x) * g11(x) * g22(x) * g33(x); rz
/*Contravariant metric*/
d gg00 trab z = 1/mrs; rz
d gg11 trab z = - mrs; rz
d gg22 trab z = - 1/(r * r); rz
d gg33 trab z = - 1/(r * r * sa * sa); rz
d (*gg[4])() = {gg00,gg11,gg22,gg33};
double F0(double x[]){return 0.00;}
double F1(d x[]){return 1.00;}
/*Christoffel Symbols*/
d G001 trab z = rs/(2 * r * (r - rs)); return z;}
d G010 trab z = G001(x); rz
d G100 trab z = G001(x) * mrs * mrs; return z;}
d G111 trab z = -G001(x); return z;}
d G122 trab z = -r * mrs; return z;}
d G133 trab z = -r * mrs * sa * sa; rz
d G212 trab z = 1/r; rz
d G221 trab z = G212(x); rz
d G233 trab z = -sa * ca; rz
d G313 trab z = 1/r; rz
d G331 trab z = G313(x); rz
d G323 trab z = ca / sa; rz
d G332 trab z = G323(x); rz
d (*G[4][4][4])() = {F0,G001,F0,F0,G010,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,G100,F0
,F0,F0,F0,G111,
F0,F0,F0,F0,G122,F0,F0,F0,F0,G133,F0,F0,F0,F0,F0,F0,G212,F0,F0,G221,F0,F0,
F0,
F0,F0,G233,F0,F0,F0,F0,F0,F0,F0,G313,F0,F0,F0,G323,F0,G331,G332,F0};
#ifdef integral
d integral (d (*f)(), d idx, d L1, d L2){d z=0; d y[4]; d dy; int i; int n;
y[1] = L1;
dy = 0;
while(y[1] < L2){
y[1] += dy ;
dy = y[1]*y[1]*idx/2;
y[1] += dy ;
z+= f(y) * 2*dy;} rz
#endif
/* W or W1 is the original tetrad*/
double W00 trab
z = 1/sqrt(mrs);
return z;}
double W11 trab z= mrs2 * sa * cb; return z;}
double W12 trab z= 1/r * ca * cb; return z;}
double W13 trab z= -(1/(r * sa) * sb); return z;}
double W21 trab z= mrs2 * sa * sb; return z;}
double W22 trab z= 1/r *ca * sb; return z;}
double W23 trab z= 1/(r * sa) * cb; return z;}
double W31 trab z= mrs2 * ca; return z;}
double W32 trab z= -(1/r * sa); return z;}
double (*W[4][4])() = {W00,F0,F0,F0,F0,W11,W12,W13,F0,W21,W22,W23,F0,W31,W32,F0}
;
d AnaliticGG00(void){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz
d AnaliticGG11(void){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r) + (1 - 1/mrs2) * r
s/(r*r*r); rz
d AnaliticGG22(void){d z; z = 0.5 * (1 - 1/mrs2) * rs/(r*r*r); rz
d (*AnaliticGG[4][4])(void)={AnaliticGG00,F0,F0,F0,F0,AnaliticGG11,F0,F0,F0,F0,A
naliticGG22,F0,F0,F0,F0,AnaliticGG22};
/*Contravariant Gravitational Energy Tensor in gr/cm3*/
/*d integral (d (*f)(), d idx, d L0, d L1)*/
d TG00(void){d z; z = - gg00(x) * AnaliticGG[0][0]() / K ; rz
/*New part*/
/*W2 is the tetrad oriented as the spherical coordinates*/
double W200 trab z= 1/mrs2 ; return z;}
double W211 trab z= mrs2 ; return z;}
double W223 trab z= 1/(r * sa) ; return z;}
double W232 trab z= -1/r ; return z;}
double (*W2[4][4])() = {W200,F0,F0,F0,F0,W211,F0,F0,F0,F0,F0,W223,F0,F0,W232,F0}
;
/*Boosts*/
/*double LB100 (double x[]){double z; z=cosh(A);return z;}
double LB101 (double x[]){double z; z=sinh(A); return z;}
double (*LB1[4][4])() = {LB100,LB101,F0,F0,LB101,LB100,F0,F0,F0,F0,F1,F0,F0,F0,F
0,F1};*/
double LB200 (double x[]){double z; z=cosh(B2);return z;}
double LB202 (double x[]){double z; z=sinh(B2); return z;}
double (*LB2[4][4])() = {LB200,F0,LB202,F0,F0,F1,F0,F0,LB202,F0,LB200,F0,F0,F0,F
0,F1};
double LB300 (double x[]){double z; z=cosh(B3);return z;}
double LB303 (double x[]){double z; z=sinh(B3); return z;}
double (*LB3[4][4])() = {LB300,F0,F0,LB303,F0,F1,F0,F0,F0,F0,F1,F0,LB303,F0,F0,L
B300};
/*Rotations */
d LR122(d x[]){d z; z = cos(B);return z;}
d LR123(d x[]){d z; z = - sin(B);return z;}
d LR132(d x[]){d z; z = sin(B);return z;}
d (*LR1[4][4])() ={F1,F0,F0,F0,F0,F1,F0,F0,F0,F0,LR122,LR123,F0,F0,LR132,LR122};
d LR211(d x[]){d z; z = cos(R2);return z;}
d LR213(d x[]){d z; z = sin(R2);return z;}
d LR231(d x[]){d z; z = -sin(R2);return z;}
d (*LR2[4][4])() ={F1,F0,F0,F0,F0,LR211,F0,LR213,F0,F0,F1,F0,F0,LR231,F0,LR211};
d LR311(d x[]){d z; z = cos(R3);return z;}
d LR312(d x[]){d z; z = -sin(R3);return z;}
d LR321(d x[]){d z; z = sin(R3);return z;}
d (*LR3[4][4])() ={F1,F0,F0,F0,F0,LR311,LR312,F0,F0,LR321,LR311,F0,F0,F0,F0,F1};
d (*Lor)();
void NoLor(void){fputs("No Lorentz Transformation Defined\n",stdout);}
/*K7.CAN was taken out from here*/
/*V is the tetrad W after Lorentz transformation*/
d V00 fz Lor(x,0,i) * W[i][0](x);} rz
d V01 fz Lor(x,0,i) * W[i][1](x);} rz
d V02 fz Lor(x,0,i) * W[i][2](x);} rz
d V03 fz Lor(x,0,i) * W[i][3](x);} rz
d V10 fz Lor(x,1,i) * W[i][0](x);} rz
d V11 fz Lor(x,1,i) * W[i][1](x);} rz
d V12 fz Lor(x,1,i) * W[i][2](x);} rz
d V13 fz Lor(x,1,i) * W[i][3](x);} rz
d V20 fz Lor(x,2,i) * W[i][0](x);} rz
d V21 fz Lor(x,2,i) * W[i][1](x);} rz
d V22 fz Lor(x,2,i) * W[i][2](x);} rz
d V23 fz Lor(x,2,i) * W[i][3](x);} rz
d V30 fz Lor(x,3,i) * W[i][0](x);} rz
d V31 fz Lor(x,3,i) * W[i][1](x);} rz
d V32 fz Lor(x,3,i) * W[i][2](x);} rz
d V33 fz Lor(x,3,i) * W[i][3](x);} rz
d (*V[4][4])()={V00,V01,V02,V03,V10,V11,V12,V13,V20,V21,V22,V23,V30,V31,V32,V33}
;
/*End of New part*/
d iAnaliticGG00(d x[]){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz
/*d iTG00(d x[]){d z; z = - 4*PI*r*r*gg00(x) * iAnaliticGG00(x) / K ; rz*/
d iEG(d x[]){d z; z = - 4*PI* V00(x) * (1 - mrs2) * (1 - mrs2) / K ; rz
double VgV (double (*V[][4])(), double (*U[][4])(), double x[], int j, int k)
{
int i;
char buf[30];
double z = 0;
for (i=0; i<=3; i++)
z += V[j][i](x) * g[i](x) * U[k][i](x);
return z;
}
double deriv(double (*f)(double x[]), double x[], double dx[], int i)
{double z;
double y2[4];
double y1[4];
int m;
for (m=0;m<=3;m++) {y1[m]=x[m];y2[m]=x[m];}
y2[i] = y2[i] + (dx[i]/2);
y1[i] = y1[i] - (dx[i]/2);
z = (f(y2) - f(y1))/dx[i];
return z;}
double derivM(double (*contderV)(),double (*V[][4])(), double x[], double dx[],
int c,int j,int k,int l)
{double z;
d p;
d q;
int i;
double y1[4];
double y2[4];
for(i=0;i<=3;i++) {y1[i]=x[i];y2[i]=x[i];}
y2[l]=y2[l]+(dx[l]/2);
y1[l]=y1[l]-(dx[l]/2);
z = ((p=contderV(V,y2,dx,c,j,k)) - (q=contderV(V,y1,dx,c,j,k)))/dx[l];
return z;}
double GM (double (*contderV)(),double (*V[][4])(), d x[], d dx[], int c,int j,
int k,int l)
{d z=0;
int i;
for(i=0;i<=3;i++)
z += G[j][l][i](x) * contderV(V,x,dx,c,i,k);
return z;}
d MG (d (*contderV)(), d (*V[][4])(), d x[], d dx[], int c,int j,int k,int l)
{d z=0;
int i;
for(i=0;i<=3;i++)
z += G[i][k][l](x) * contderV(V,x,dx,c,j,i);
return z;}
double GV (double (*V[][4])(), double x[], int c, int i, int j)
{double z = 0;
int m;
for(m=0;m<=3;m++)
z += G[i][j][m](x) * V[c][m](x); return z;}
double contderV (double (*V[][4])(double x[]), double x[], double dx[], int c,
int j, int k)
{double z;
z = deriv(V[c][j], x, dx, k) + GV (V, x, c, j, k); return z;}
double mixderMV(d (*contderV)(d (*V[][4])(d x[]),d x[],d dx[],int c,int j,int k
),d (*V[][4])(), d x[],d dx[],int c,int j,int k,int l)
{ d z;
z =derivM (contderV,V,x,dx,c,j,k,l) + GM(contderV,V,x,dx,c,j,k,l) - MG(contderV
,V,x,dx,c,j,k,l);
return z;}
/*Ricci tensor when RM = - RG*/
double Rjl (d (*mixderMV)(),d (*V[][4])(),d x[],d dx[],int j,int l)
{d z=0;int c;int k;
for(c=0;c<=3;c++){for(k=0;k<=3;k++){
z += V[c][k](x) * ETA[c] * (mixderMV(contderV,V,x,dx,c,j,k,l) - mixderMV(contd
erV,V,x,dx,c,j,l,k));}}
rz
/*Pijk =Vai ETAab Vbj;k (i and j contravariant)*/
d Pijk (d (*V[][4])(), d x[], d dx[], int i, int j, int k)
{d z = 0; int c;
for(c=0;c<=3;c++)z += V[c][i](x) * ETA[c] * contderV(V, x, dx, c, j, k);
rz
/*Pijkl = Pijk;l*/
d Pijkl (d (*V[][4])(), d x[], d dx[], int i, int j, int k, int l){d z=0;d y=0;i
nt m;
for(m=0;m<=3;m++) {y += G[i][m][l](x) * Pijk(V, x, dx, m, j, k)
+ G[j][m][l](x) * Pijk(V,x,dx,i,m,k) - G[m][k][l](x) * Pijk(V,x,dx,i,j,m);}
z =derivM (Pijk,V,x,dx,i,j,k,l) + y; rz
/*GGij = Gravitational part of Einstein tensor*/
/*RGij = Pkik;j - Pkij;k*/
void GGij(d GG[][4], d (*V[][4])(), d x[], d dx[])
{d z = 0; d y = 0; int j; int k; int m;
fjk for(m=0;m<=3;m++) z+=Pijkl(V,x,dx,m,j,m,k) - Pijkl(V,x,dx,m,j,k,m);
GG[j][k]= z; z=0;}}
for(j=0;j<=3;j++) y += GG[j][j]/2;
for(j=0;j<=3;j++) GG[j][j] = GG[j][j] - y;
}
#ifndef FOUR_COMPONENTS
double TGG(d GG[][4], d x[], d dx[])
{ d y = 0; int j; for(j=0;j<=3;j++) y += GG[j][j]; return y;}
#endif
/* double contderV (double (*V[][4])(double x[]), double x[], double dx[], int c
, int j, int k)*/
/* RM2lm = Pijm Pjli - Piji Pjlm = Vai;i ETAaa Val;m - Vai;m ETAaa Val;i */
double RM2lm(double (*V[][4])(), double x[], double dx[],int l, int m)
{double z=0;int j; int k;
fjk z+= contderV(V,x,dx,j,k,k) * ETA[j] * contderV(V,x,dx,j,l,m) -
contderV(V,x,dx,j,k,m) *ETA[j] * contderV(V,x,dx,j,l,k);}}return z;}
/*Contravariant NGGlm*/
/* NGGlm = Val;i ETAaa Vai;m - Val;i ETAaa Vam;i */
double NGGlm(double (*V[][4])(), double x[], double dx[],int l, int m)
{double z=0;int j; int k;
fjk z+= contderV(V,x,dx,j,l,k) * ETA[j] * contderV(V,x,dx,j,k,m) * gg[m](x) -
contderV(V,x,dx,j,l,k) *ETA[j] * contderV(V,x,dx,j,m,k) * gg[k](x);}}return z;
}
#ifdef DEF1
double *GMAT(double dLp1, double GM[][4])/*Non used RM2lm - 1/2 delta RM2*/
{
int y = 0; int z;int i;int j;int k;
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
GM[j][k] = RM2lm(V,x,dx,j,k);
if(j == k) y += GM[j][k];}}
for(i=0;i<=3;i++) GM[i][i] = GM[i][i] - y/2;return GM;
}
/*VgVj = Vck gkk Vek;j*/
double VgVj (double (*V[][4])(), d x[], d dx[], int c, int e,int j)
{d z = 0;int i;
for(i=0;i<=3;i++)
z += V[c][i](x) * g[i](x) * contderV(V,x,dx,e,i,j);
return z;}
/*SRdgVVjj = (sqrt(-|g|) Vck Vek;j),j)*/
double SRdgVVjj (d (*f)(), d x[], d dx[], int c, int e)
{ d z = 0; d X1[4]; d X2[4]; int j;
for(j=0;j<=3;j++)
X1[j]=X2[j]=x[j];
for(j=0;j<=3;j++)
{
X1[j] = X1[j] - dx[j]/2;
X2[j] = X2[j] + dx[j]/2;
z += (sqrt(- dg(X2)) * f(V,X2,dx,c,e,j) * gg[j](X2) - sqrt(- dg(X1)) * f(V,X1,d
x,c,e,j) * gg[j](X1))/dx[j] ;
}
return z;}
/* VgVjgj = (Vck Vek;j);j*/
double VgVjgj (d (*f)(), d x[], d dx[],int c, int e)
{d y = 0; d z = 0; d X1[4]; d X2[4]; int j; int k;
for(j=0;j<=3;j++)
X1[j]=X2[j]=x[j];
for(j=0;j<=3;j++)
{
X1[j] = X1[j] - dx[j]/2;
X2[j] = X2[j] + dx[j]/2;
y += (f(V,X2,dx,c,e,j) - f(V,X1,dx,c,e,j))/dx[j] * gg[j](x) ;
for(k=0;k<=3;k++)
z +=G[k][j][j](x) * f(V,x,dx,c,e,k) * gg[j](x);
}
z = y - z; return z;}
#endif DEF1
/*double mixderMV(d (*contderV)(d (*V[][4])(d x[]),d x[],d dx[],int c,int j,int
k),d (*V[][4])(), d x[],d dx[],int c,int j,int k,int l)*/
/*Added 28.5.91*/
double AncontRM00(double rs, double r){ double z; z=AnaliticontRM00; return z;}
double AncontEg0(double rs, double r){ double z; z=AnaliticontEg0; return z;}
void main (void)
{
int c;
int i;
int j;
int k;
int m;
int n;
double z;
double y;
double GM[4][4];
double G1[4][4]; /*FOUR COMPONENTS of the EINSTEIN Tensor*/
double G2[4][4];
double G3[4][4];
double G4[4][4];
double TG1; /* Auxiliar for Gx[4][4]*/
double TG2;
double TG3;
double TG4;
char ch[4];
static char buf[30];
char *buf2 = "?";
char *buf3 = "W1 enabled";
d GG[4][4];
d NGG[4][4];
d L1 = 7e10;
d L2 = 1e12;
d idx = 1e-15;
d zz[4];
/*Save original tetrads*/
d (*W1[4][4])() ;
d (*Vx[4][4])() ;
fjk W1[j][k] = W[j][k];}}
fjk Vx[j][k] = V[j][k];}}
a1:
/*Ask for parameter values*/
fputs("This version differs from Q in that GM was replaced by RM\n",stdout);
fputs(" Vai;jk was replaced by AnaliticmixRMjj/2\n",stdout);
fputs(" and 6 was replaced by NGGlm\n",stdout);
fputs("13 Integral is calculated with TG = 1/2k RG\n",stdout);
fputs("rs = ",stdout);
fputs(gcvt(rs, 12, buf),stdout);fputs(" rs = ",stdout);
gets(buf);
if (buf[0] != '')
rs = atof(buf);
fputs("r = ",stdout);
fputs(gcvt(r, 12, buf),stdout);fputs(" r = ",stdout);
gets(buf);
if (buf[0] != '')
r = atof(buf);
fputs("dr = ",stdout);
fputs(gcvt(dx[1], 12, buf),stdout);fputs(" dr = ",stdout);
gets(buf);
if (buf[0] != '')
dx[1] = atof(buf);
/*K1.CAN was taken out from here*/
fputs("Low limit of integration = ", stdout); fputs(gcvt(L1, 12, buf),stdout);
fputs(" L1 = ",stdout);gets(buf); if(buf[0] != '') L1 = atof(buf);
fputs("High limit of integration = ", stdout); fputs(gcvt(L2, 12, buf),stdout);
fputs(" L2 = ",stdout);gets(buf); if(buf[0] != '') L2 = atof(buf);
fputs("Integral increment = ", stdout); fputs(gcvt(idx, 12, buf),stdout);
fputs(" idx = ",stdout);gets(buf); if(buf[0] != '') idx = atof(buf);
/*Print parameter values*/
fputs("rs = ",stdout); fputs(gcvt(rs,12,buf),stdout);
fputs(" r = ",stdout); fputs(gcvt(r,12,buf),stdout);
/*K2.CAN was taken out from here*/
fputs(" L1 = ",stdout); fputs(gcvt(L1,12,buf),stdout);
fputs(" L2 = ",stdout); fputs(gcvt(L2,12,buf),stdout);
fputs(" idx = ",stdout); fputs(gcvt(idx,12,buf),stdout);
fputs("\n",stdout);
fputs("rs = ",stdprn); fputs(gcvt(rs,12,buf),stdprn);
fputs(" r = ",stdprn); fputs(gcvt(r,12,buf),stdprn);
/*K3.CAN was taken out from here*/
fputs(" L1 = ",stdprn); fputs(gcvt(L1,12,buf),stdprn);
fputs(" L2 = ",stdprn); fputs(gcvt(L2,12,buf),stdprn);
fputs(" idx = ",stdprn); fputs(gcvt(idx,12,buf),stdprn);
fputs("\n",stdprn);
a0:
/*K4.CAN was taken out from here*/
goto nl;/*Lorentz transformation disabled -Added 28.5.91*/
a00:
/*General Menu - The tetrads are contravariant and the tensors mixed*/
/*The Lorentz indeces are covariant*/
fputs("\n1 Paramters 2 V 3 VgV 4 Vcj,k 5 AnaliticmixRM00/2 6 NGG\n",stdout)
;
fputs("7 Rjk 8 RMjk 9 (VaiVbi;j);j 10 GGjk 11 AnaliticGGjk\n",stdout);
fputs(" 12 Contravariant TG00 13 Integral 14 FOUR COMPONENTS\n15 EXIT\n",stdo
ut);
gets(buf);
/*K5.CAN was taken out from here*/
if(buf[0] == '1' && buf[1] == '0') goto a10;
if(buf[0] == '1' && buf[1] == '1') goto a11;
if(buf[0] == '1' && buf[1] == '2') goto a12;
if(buf[0] == '1' && buf[1] == '3') goto a13;
if(buf[0] == '1' && buf[1] == '4') goto a14;
if(buf[0] == '1' && buf[1] == '5') goto a15;
if(buf[0] == '1') goto a1;
if(buf[0] == '2') goto a2;
if(buf[0] == '3') goto a3;
if(buf[0] == '4') goto a4;
if(buf[0] == '5') goto a5;
if(buf[0] == '6') goto a6;
if(buf[0] == '7') goto a7;
if(buf[0] == '8') goto a8;
if(buf[0] == '9') goto a9;
goto a00;
/*K6.CAN was taken out from here*/
nl:
Lor = NoLor;
fjk V[j][k] = W[j][k];}}
buf2 = "Lorentz transformation disabled";
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
goto a00;
#ifdef DEF2
/* Fuera de Servicio*/
z = mrs;
fputs("mrs = ",stdout);
fputs(gcvt(z, 12, buf), stdout);
fputs("\n", stdout);
z = mrs2;
fputs("mrs2 = ", stdout);
fputs(gcvt(z, 12, buf), stdout);
fputs("\n",stdout);
fputs("g = \n", stdout);
for (j=0;j<=3;j++){
z = g[j](x);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n\n", stdout);
#endif DEF2
/*Fin de "Fuera de Servicio"*/
L:
if(Lor==NoLor){NoLor();goto a00;}
fputs("L = \n",stdout);
fputs("L = \n",stdprn);
fjk z = Lor(x,j,k);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
goto a00;
a2:
fputs(" k\n", stdout);
fputs("V = \n", stdout);
fputs(" a\n", stdout);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = V[j][k](x);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n", stdout);
}
goto a00;
a3:
#ifdef DEF1
fputs("\n VgV =\n", stdout);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = VgV(V, V, x, j, k);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n", stdout);
}
#endif DEF1
goto a00;
a4:
fputs("derivada Vcj,k = \n", stdout);
for(c=0;c<=3;c++)
{fputs("c = ", stdout); fputs(itoa(c, buf, 10),stdout);fputs("\n", stdout);
fjk z = deriv(V[c][j], x, dx, k);
fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}
fputs("\n",stdout);}}
goto a00;
a5:
fputs(" j\n",stdout);
fputs("AnaliticmixRM /2 =\n",stdout);
fputs(" j\n",stdout);
fputs("AnaliticmixRMjj = \n",stdprn);
zz[0] = AnaliticmixRM00/2;zz[1]=AnaliticmixRM11;zz[2]=AnaliticmixRM22/2;zz[3]=A
naliticmixRM33/2;
for(j=0;j<=3;j++){
fputs(gcvt(zz[j],12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
}
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
/* for(c=0;c<=3;c++)*/
/* {*/
/* fputs(itoa(c, buf, 10), stdout);*/
/* fputs("covariant derivada Vcj;k = \n", stdout);*/
/* fjk z = contderV(V, x, dx, c, j, k);*/
/* fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}*/
/* fputs("\n",stdout);}*/
/* }*/
/* goto a00; */
a6:
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
NGG[j][k] = NGGlm(V,x,dx,j,k);
}}
fputs(" jk \n",stdout);
fputs("NGG =\n",stdout);
fputs("NGG =\n",stdprn);
fjk fputs(gcvt(NGG[j][k],12,buf),stdout); fputs(" ",stdout);
fputs(buf,stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
/* fputs("c = ",stdout); fputs(itoa (c, buf, 10), stdout);*/
/* gets(buf);*/
/* if (buf[0] != '')*/
/* c = atoi (buf);*/
/* fputs("c = ",stdout);*/
/* for(i=0;i<=3;i++)*/
/* {*/
/* fputs(itoa(c, buf, 10), stdout);fputs(", ",stdout);*/
/* fputs(itoa(i, buf, 10), stdout);*/
/* fputs(" Vcj;kl = \n", stdout);*/
/* fjk z = mixderMV(contderV, V, x, dx, c, i, j, k);*/
/* fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}*/
/* fputs("\n",stdout);}*/
/* }*/
goto a00;
/*Fuera de Servicio*/
#ifdef DEF2
fputs("\nGijk = \n ",stdout);
for(i=0;i<=3;i++){fjk if((z=G[i][j][k](x)) != 0) {c= i*100+j*10+k;fputs(itoa(c,
buf,10),stdout);
fputs(" Gijk = ",stdout);fputs(gcvt(G[i][j][k](x),12,buf),stdout);
fputs(" ",stdout);}}}
fputs("\n",stdout);}
goto a0;
#endif DEF2
/*Fin de Fuera de Servicio*/
a7:
fputs(" j \n", stdout);
fputs("R = \n", stdout);
fputs(" l \n", stdout);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = Rjl(mixderMV,V,x,dx,j,k);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n", stdout);
}
goto a00;
a8:
y = 0;
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = RM2lm(V,x,dx,j,k);
GM[j][k] = z;
/* if(j == k) y += z;*/
}}
/* for(i=0;i<=3;i++) GM[i][i] = GM[i][i] - y/2;*/
fputs(" j \n",stdout);
fputs("RM =\n",stdout);
fputs(" k\n",stdout);
fputs("RM =\n",stdprn);
fjk fputs(gcvt(GM[j][k],12,buf),stdout); fputs(" ",stdout);
fputs(buf,stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
goto a00;
a9:
/*double VgVj (double (*V[][4])(), d x[], d dx[], int c, int e,int j)*/
/* double VgVjgj (d (*f)(), d x[], d dx[],int c, int e)*/
/*double SRdgVVjj (d (*V[][4])(), d x[], d dx[], int c, int e)*/
#ifdef DEF1
fputs("(VajVbj;k);k = \n",stdout);
fputs("(VajVbj;k);k = \n",stdprn);
fjk fputs(gcvt(VgVjgj(VgVj,x,dx,j,k),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
fputs("(sqrt(-g)VajVbj;k),k = \n",stdout);
fputs("(sqrt(-g)VajVbj;k),k = \n",stdprn);
fjk fputs(gcvt(SRdgVVjj(VgVj,x,dx,j,k),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
#endif DEF1
goto a00;
a10:
/*GGij = Gravitational part of Einstein Tensor*/
/*RGij = Pkjk;l - Pkjl;k*/
/*void GGij(d GG[][4], d (*V[][4])(), d x[], d dx[])*/
GGij(GG,V,x,dx);
fputs(" i\n",stdout);
fputs("GG = \n",stdout);
fputs(" j \n",stdout);
fputs("GGij = \n",stdprn);
fjk fputs(gcvt(GG[j][k],12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
#ifndef FOUR_COMPONENTS
fputs("Trace of GG = TGG = ", stdout);
fputs("Trace of GG = TGG = ", stdprn);
fputs(gcvt(TGG(GG, x, dx),12,buf), stdout);
fputs(buf, stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
#endif
goto a00;
a11:
fputs(" i\n",stdout);
fputs("AnaliticGG =\n",stdout);
fputs(" j\n",stdout);
fputs("AnaliticGGij = \n",stdprn);
fjk fputs(gcvt(AnaliticGG[j][k](),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
goto a00;
a12:
fputs("If r and rs are given in cm. TG00 results in gr/cm3\n",stdout);
fputs("K = ",stdout);
fputs("K = ",stdprn);
fputs(gcvt(K,12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("Contravariant GG00 = ",stdout);
fputs("Contravariant GG00 = ",stdprn);
fputs(gcvt(gg00(x)*AnaliticGG00(),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("Contravariant TG00 = ",stdout);
fputs("Contravariant TG00 = ",stdprn);
fputs(gcvt(TG00(),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
a13:
/*Integral*/
/*d iTG00(d x[]){d z; z = - 4*PI*r*r*gg00(x) * iAnaliticGG00(x) / K ; rz*/
/*d iAnaliticGG00(d x[]){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz*/
/*d integral (d (*f)(), d idx, d L1, d L2){d z=0; d y[4]; d dy; int i; int n;*/
/* y[1] = L1;*/
/* while(y[1] < L2){*/
/* y[1] += dy = L1*L1*idx/2;*/
/* z+= f(y) * 2*dy;} rz*/
fputs("Analitical Calculation of Er when kTg = Rg/2) \n",stdout);
fputs("Er = sqrt(-g) V00 TG00 = ",stdout);
fputs("Er = sqrt(-g) V00 TG00 = ",stdprn);
fputs(gcvt(Er,12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("Er/En = ",stdout);fputs("E/En = ",stdprn);
fputs(gcvt(Er/En,12,buf), stdout);
fputs(gcvt(Er/En,12,buf), stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
a14:
/*Pijk =Vai ETAab Vbj;k (i and j contravariant)*/
/*d Pijk (d (*V[][4])(), d x[], d dx[], int i, int j, int k)*/
/*Pijkl = Pijk;l*/
/*d Pijkl (d (*V[][4])(), d x[], d dx[], int i, int j, int k, int l)*/
#ifdef FOUR_COMPONENTS
/* FOUR_COMPONENTS of EINSTEIN TENSOR - m contravariant, n covariant */
fputs("FOUR COMPONENTS of the EINSTEIN TENSOR",stdout);fputs("\n",stdout
);
fputs("FOUR COMPONENTS of the EINSTEIN TENSOR",stdprn);fputs("\n",stdprn);
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
G1[m][n] = G2[m][n] = G3[m][n] = G4[m][n] = 0;}}
TG1 = TG2 = TG3 = TG4 = 0;
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
G1[m][n] += Pijkl(V, x, dx, j, m, j, n);}}}
for (j=0;j<=3;j++){
TG1 += G1[j][j];}
for (j=0;j<=3;j++){
G1[j][j] = G1[j][j] - TG1/2;}
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
G2[m][n] += -(Pijkl(V, x, dx, j, m, n, j));}}}
for (j=0;j<=3;j++){
TG2 += G2[j][j];}
for (j=0;j<=3;j++){
G2[j][j] = G2[j][j] - TG2/2;}
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
G3[m][n] += Pijk(V, x, dx, k, j, n) * Pijk(V, x, dx, j, m, k);}}}}
for (j=0;j<=3;j++){
TG3 += G3[j][j];}
for (j=0;j<=3;j++){
G3[j][j] = G3[j][j] - TG3/2;}
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
G4[m][n] += -(Pijk(V, x, dx, k, j, k) * Pijk(V, x, dx, j, m, n));}}}}
for (j=0;j<=3;j++){
TG4 += G4[j][j];}
for (j=0;j<=3;j++){
G4[j][j] = G4[j][j] - TG4/2;}
fputs("G1jk =",stdprn);fputs("\n",stdprn);
fputs("G1jk =",stdout);fputs("\n",stdout);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G1[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout)
;}
fputs("G2jk =",stdout);fputs("\n",stdout);
fputs("G2jk =",stdprn);fputs("\n",stdprn);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G2[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout)
;}
fputs("G3jk =",stdout);fputs("\n",stdout);
fputs("G3jk =",stdprn);fputs("\n",stdprn);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G3[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout)
;}
fputs("G4jk =",stdout);fputs("\n",stdout);
fputs("G4jk =",stdprn);fputs("\n",stdprn);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G4[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout)
;}
#else FOUR_COMPONENTS
fputs("FOUR COMPONENTS non defined", stdout);
#endif FOUR_COMPONENTS
goto a00;
a15:
include>stdio.h#
#include <stdio.h>
#include <math.h>
#define DEF1
#define mrs (1 - rs/x[1])
#define mrs2 sqrt(mrs)
#define Z0 (double x[]){return 0;}
#define Z1 (double x[]){return 1;}
#define trab (double x[]){double z=0;
#define sa sin(x[2])
#define sb sin(x[3])
#define ca cos(x[2])
#define cb cos(x[3])
#define V(i,j) (*V[i][j])(double x[])
#define t x[0]
#define r x[1]
#define a x[2]
#define b x[3]
#define fjk for(j=0;j<=3;j++){for(k=0;k<=3;k++){
#define d double
#define rz return z;}
#define fz (double x[]){double z=0;int i;for(i=0;i<=3;i++){ z+=
#define PI 3.1415927
#define A (Lp1/x[1]) /*Lorentz parameters Boosts*/
#define B2 (Lp2/x[1])
#define B3 (Lp3/x[1])
#define B (Lp4/x[1]) /*Rotations*/
#define R2 (Lp5/x[1])
#define R3 (Lp6/x[1])
#define K (8*PI*7.425*1e-29) /*GN/c2 Einstein Gravitational Constant in cm/gr*/
#define Gn 7.425e-29
#define M (rs/(2*Gn))
#define En (-0.5*Gn*M*M/L1) /*Newton Gravitational Energy*/
#define AnaliticmixRM00 ((1/mrs2 - 1) * rs/(x[1]*x[1]*x[1]))
#define AnaliticmixRM11 0
#define AnaliticmixRM22 (0.5*(1/mrs2 - 1) * rs/(x[1]*x[1]*x[1])-(1-mrs2)*(1-mrs2)/(x[1]*x[1]))
#define AnaliticmixRM33 AnaliticmixRM22
/*Added 28.5.91*/
#define AnaliticontRM00 mrs * ((1/mrs2 - 1) * rs/(x[1]*x[1]*x[1]))
#define AnaliticontEg0 (- rs/Gn/2 * (log(2*mrs2/(1+mrs2)) + 1/mrs2 - 1))
/*End Added*/
#define En (-0.5*Gn*M*M/r) /*Newton Gravitational Energy*/
#define Er (0.5*M*log(2*mrs/(0.5+0.5*mrs+sqrt(mrs)))) /*Relativistic integral gravitational energy kTg = Rg/2*//*Used symbols t,r,a,b,rs,mrs,mrs2,Z0,trab,sa,sb,ca,cb,x[],V[][],V(i,j),g00*/
/*g11,g22,g33,g[],W00,..,W[][],V00,..,VB00,..,VB200,..,V[][],VB[][],VB2[][]*/
/*VRab00,..,VRab[][],XYtrabLB00,..,LB200,..,LB[][],LB2[][],LRab00,..,LRab[][]*/
/*Lor,LorB1R1,fjk,Lp1,Lp2,ggNN,gg[],d,rz,fz,PI,A,B,K,GN,gr*/
#ifndef integral
d EG(d rs, d Lp1) { d z; z = 4*PI*rs/K + (8*PI*Lp1/K)*(sqrt(1 - rs/Lp1) - 1); return z;}
#endif
d Lp1 = 0; /* Lorenz parameter - Boosts*/
d Lp2 = 0;
d Lp3 = 0;
d Lp4 = 0;/*Rotations*/
d Lp5 = 0;
d Lp6 = 0;
int ETA[4] = {1,-1,-1,-1};
double x[4]={7.00, 1.00, 1.5708 , 0.00};
double dx[4]={0.1, 0.0001, 0.0001, 0.0001};
double rs=1e-2;
/*Covariant metric*/
double g00 trab z= mrs ; return z;}
double g11 trab z= -(1/mrs) ; return z;}
double g22 trab z= - (r * r); return z;}
double g33 trab z= -(r * r * sa * sa); return z;}
double (*g[4])() = { g00, g11, g22, g33};
d dg(d x[]){d z; z = g00(x) * g11(x) * g22(x) * g33(x); rz
/*Contravariant metric*/
d gg00 trab z = 1/mrs; rz
d gg11 trab z = - mrs; rz
d gg22 trab z = - 1/(r * r); rz
d gg33 trab z = - 1/(r * r * sa * sa); rz
d (*gg[4])() = {gg00,gg11,gg22,gg33};
double F0(double x[]){return 0.00;}
double F1(d x[]){return 1.00;}
/*Christoffel Symbols*/
d G001 trab z = rs/(2 * r * (r - rs)); return z;}
d G010 trab z = G001(x); rz
d G100 trab z = G001(x) * mrs * mrs; return z;}
d G111 trab z = -G001(x); return z;}
d G122 trab z = -r * mrs; return z;}
d G133 trab z = -r * mrs * sa * sa; rz
d G212 trab z = 1/r; rz
d G221 trab z = G212(x); rz
d G233 trab z = -sa * ca; rz
d G313 trab z = 1/r; rz
d G331 trab z = G313(x); rz
d G323 trab z = ca / sa; rz
d G332 trab z = G323(x); rz
d (*G[4][4][4])() = {F0,G001,F0,F0,G010,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,F0,G100,F0,F0,F0,F0,G111,
F0,F0,F0,F0,G122,F0,F0,F0,F0,G133,F0,F0,F0,F0,F0,F0,G212,F0,F0,G221,F0,F0,F0,
F0,F0,G233,F0,F0,F0,F0,F0,F0,F0,G313,F0,F0,F0,G323,F0,G331,G332,F0};
#ifdef integral
d integral (d (*f)(), d idx, d L1, d L2){d z=0; d y[4]; d dy; int i; int n;
y[1] = L1;
dy = 0;
while(y[1] < L2){
y[1] += dy ;
dy = y[1]*y[1]*idx/2;
y[1] += dy ;
z+= f(y) * 2*dy;} rz
#endif
/* W or W1 is the original tetrad*/
double W00 trab
z = 1/sqrt(mrs);
return z;}
double W11 trab z= mrs2 * sa * cb; return z;}
double W12 trab z= 1/r * ca * cb; return z;}
double W13 trab z= -(1/(r * sa) * sb); return z;}
double W21 trab z= mrs2 * sa * sb; return z;}
double W22 trab z= 1/r *ca * sb; return z;}
double W23 trab z= 1/(r * sa) * cb; return z;}
double W31 trab z= mrs2 * ca; return z;}
double W32 trab z= -(1/r * sa); return z;}
double (*W[4][4])() = {W00,F0,F0,F0,F0,W11,W12,W13,F0,W21,W22,W23,F0,W31,W32,F0};
d AnaliticGG00(void){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz
d AnaliticGG11(void){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r) + (1 - 1/mrs2) * rs/(r*r*r); rz
d AnaliticGG22(void){d z; z = 0.5 * (1 - 1/mrs2) * rs/(r*r*r); rz
d (*AnaliticGG[4][4])(void)={AnaliticGG00,F0,F0,F0,F0,AnaliticGG11,F0,F0,F0,F0,AnaliticGG22,F0,F0,F0,F0,AnaliticGG22};
/*Contravariant Gravitational Energy Tensor in gr/cm3*/
/*d integral (d (*f)(), d idx, d L0, d L1)*/
d TG00(void){d z; z = - gg00(x) * AnaliticGG[0][0]() / K ; rz
/*New part*/
/*W2 is the tetrad oriented as the spherical coordinates*/
double W200 trab z= 1/mrs2 ; return z;}
double W211 trab z= mrs2 ; return z;}
double W223 trab z= 1/(r * sa) ; return z;}
double W232 trab z= -1/r ; return z;}
double (*W2[4][4])() = {W200,F0,F0,F0,F0,W211,F0,F0,F0,F0,F0,W223,F0,F0,W232,F0};
/*Boosts*/
double LB100 (double x[]){double z; z=cosh(A);return z;}
double LB101 (double x[]){double z; z=sinh(A); return z;}
double (*LB1[4][4])() = {LB100,LB101,F0,F0,LB101,LB100,F0,F0,F0,F0,F1,F0,F0,F0,F0,F1};
double LB200 (double x[]){double z; z=cosh(B2);return z;}
double LB202 (double x[]){double z; z=sinh(B2); return z;}
double (*LB2[4][4])() = {LB200,F0,LB202,F0,F0,F1,F0,F0,LB202,F0,LB200,F0,F0,F0,F0,F1};
double LB300 (double x[]){double z; z=cosh(B3);return z;}
double LB303 (double x[]){double z; z=sinh(B3); return z;}
double (*LB3[4][4])() = {LB300,F0,F0,LB303,F0,F1,F0,F0,F0,F0,F1,F0,LB303,F0,F0,LB300};
/*Rotations */
d LR122(d x[]){d z; z = cos(B);return z;}
d LR123(d x[]){d z; z = - sin(B);return z;}
d LR132(d x[]){d z; z = sin(B);return z;}
d (*LR1[4][4])() ={F1,F0,F0,F0,F0,F1,F0,F0,F0,F0,LR122,LR123,F0,F0,LR132,LR122};
d LR211(d x[]){d z; z = cos(R2);return z;}
d LR213(d x[]){d z; z = sin(R2);return z;}
d LR231(d x[]){d z; z = -sin(R2);return z;}
d (*LR2[4][4])() ={F1,F0,F0,F0,F0,LR211,F0,LR213,F0,F0,F1,F0,F0,LR231,F0,LR211};
d LR311(d x[]){d z; z = cos(R3);return z;}
d LR312(d x[]){d z; z = -sin(R3);return z;}
d LR321(d x[]){d z; z = sin(R3);return z;}
d (*LR3[4][4])() ={F1,F0,F0,F0,F0,LR311,LR312,F0,F0,LR321,LR311,F0,F0,F0,F0,F1};
d (*Lor)();
void NoLor(void){fputs("No Lorentz Transformation Defined\n",stdout);}
d LorB1(d x[],int i, int j){d z ; z = LB1[i][j](x); return z;}
d LorB2(d x[],int i, int j){d z ; z = LB2[i][j](x); return z;}
d LorB3(d x[],int i, int j){d z ; z = LB3[i][j](x); return z;}
d LorR1(d x[],int i, int j){d z ; z = LR1[i][j](x); return z;}
d LorR2(d x[],int i, int j){d z ; z = LR2[i][j](x); return z;}
d LorR3(d x[],int i, int j){d z ; z = LR3[i][j](x); return z;}
d LorB1R1(d x[], int i, int j){d z = 0; int k; for(k=0;k<=3;k++) z += LB1[i][k](x) * LR1[k][j](x);
return z;}
d LorB1B2(d x[], int i, int j){d z = 0; int k; for(k=0;k<=3;k++) z += LB1[i][k](x) * LB2[k][j](x);
return z;}
d LorR1R3(d x[], int i, int j){d z = 0; int k; for(k=0;k<=3;k++) z += LR1[i][k](x) * LR3[k][j](x); return z;}
/*V is the tetrad W after Lorentz transformation*/
d V00 fz Lor(x,0,i) * W[i][0](x);} rz
d V01 fz Lor(x,0,i) * W[i][1](x);} rz
d V02 fz Lor(x,0,i) * W[i][2](x);} rz
d V03 fz Lor(x,0,i) * W[i][3](x);} rz
d V10 fz Lor(x,1,i) * W[i][0](x);} rz
d V11 fz Lor(x,1,i) * W[i][1](x);} rz
d V12 fz Lor(x,1,i) * W[i][2](x);} rz
d V13 fz Lor(x,1,i) * W[i][3](x);} rz
d V20 fz Lor(x,2,i) * W[i][0](x);} rz
d V21 fz Lor(x,2,i) * W[i][1](x);} rz
d V22 fz Lor(x,2,i) * W[i][2](x);} rz
d V23 fz Lor(x,2,i) * W[i][3](x);} rz
d V30 fz Lor(x,3,i) * W[i][0](x);} rz
d V31 fz Lor(x,3,i) * W[i][1](x);} rz
d V32 fz Lor(x,3,i) * W[i][2](x);} rz
d V33 fz Lor(x,3,i) * W[i][3](x);} rz
d (*V[4][4])()={V00,V01,V02,V03,V10,V11,V12,V13,V20,V21,V22,V23,V30,V31,V32,V33};
/*End of New part*/
d iAnaliticGG00(d x[]){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz
/*d iTG00(d x[]){d z; z = - 4*PI*r*r*gg00(x) * iAnaliticGG00(x) / K ; rz*/
d iEG(d x[]){d z; z = - 4*PI* V00(x) * (1 - mrs2) * (1 - mrs2) / K ; rz
double VgV (double (*V[][4])(), double (*U[][4])(), double x[], int j, int k)
{
int i;
char buf[30];
double z = 0;
for (i=0; i<=3; i++)
z += V[j][i](x) * g[i](x) * U[k][i](x);
return z;
}
double deriv(double (*f)(double x[]), double x[], double dx[], int i)
{double z;
double y2[4];
double y1[4];
int m;
for (m=0;m<=3;m++) {y1[m]=x[m];y2[m]=x[m];}
y2[i] = y2[i] + (dx[i]/2);
y1[i] = y1[i] - (dx[i]/2);
z = (f(y2) - f(y1))/dx[i];
return z;}
double derivM(double (*contderV)(),double (*V[][4])(), double x[], double dx[],int c,int j,int k,int l)
{double z;
d p;
d q;
int i;
double y1[4];
double y2[4];
for(i=0;i<=3;i++) {y1[i]=x[i];y2[i]=x[i];}
y2[l]=y2[l]+(dx[l]/2);
y1[l]=y1[l]-(dx[l]/2);
z = ((p=contderV(V,y2,dx,c,j,k)) - (q=contderV(V,y1,dx,c,j,k)))/dx[l];
return z;}
double GM (double (*contderV)(),double (*V[][4])(), d x[], d dx[], int c,int j,int k,int l)
{d z=0;
int i;
for(i=0;i<=3;i++)
z += G[j][l][i](x) * contderV(V,x,dx,c,i,k);
return z;}
d MG (d (*contderV)(), d (*V[][4])(), d x[], d dx[], int c,int j,int k,int l)
{d z=0;
int i;
for(i=0;i<=3;i++)
z += G[i][k][l](x) * contderV(V,x,dx,c,j,i);
return z;}
double GV (double (*V[][4])(), double x[], int c, int i, int j)
{double z = 0;
int m;
for(m=0;m<=3;m++)
z += G[i][j][m](x) * V[c][m](x); return z;}
double contderV (double (*V[][4])(double x[]), double x[], double dx[], int c, int j, int k)
{double z;
z = deriv(V[c][j], x, dx, k) + GV (V, x, c, j, k); return z;}
double mixderMV(d (*contderV)(d (*V[][4])(d x[]),d x[],d dx[],int c,int j,int k),d (*V[][4])(), d x[],d dx[],int c,int j,int k,int l)
{ d z;
z =derivM (contderV,V,x,dx,c,j,k,l) + GM(contderV,V,x,dx,c,j,k,l) - MG(contderV,V,x,dx,c,j,k,l);
return z;}
/*Ricci tensor when RM = - RG*/
double Rjl (d (*mixderMV)(),d (*V[][4])(),d x[],d dx[],int j,int l)
{d z=0;int c;int k;
for(c=0;c<=3;c++){for(k=0;k<=3;k++){
z += V[c][k](x) * ETA[c] * (mixderMV(contderV,V,x,dx,c,j,k,l) - mixderMV(contderV,V,x,dx,c,j,l,k));}}
rz
/*Pijk =Vai ETAab Vbj;k (i and j contravariant)*/
d Pijk (d (*V[][4])(), d x[], d dx[], int i, int j, int k)
{d z = 0; int c;
for(c=0;c<=3;c++)z += V[c][i](x) * ETA[c] * contderV(V, x, dx, c, j, k);
rz
/*Pijkl = Pijk;l*/
d Pijkl (d (*V[][4])(), d x[], d dx[], int i, int j, int k, int l){d z=0;d y=0;int m;
for(m=0;m<=3;m++) {y += G[i][m][l](x) * Pijk(V, x, dx, m, j, k)
+ G[j][m][l](x) * Pijk(V,x,dx,i,m,k) - G[m][k][l](x) * Pijk(V,x,dx,i,j,m);}
z =derivM (Pijk,V,x,dx,i,j,k,l) + y; rz
/*GGij = Gravitational part of Einstein tensor*/
/*RGij = Pkik;j - Pkij;k*/
void GGij(d GG[][4], d (*V[][4])(), d x[], d dx[])
{d z = 0; d y = 0; int j; int k; int m;
fjk for(m=0;m<=3;m++) z+=Pijkl(V,x,dx,m,j,m,k) - Pijkl(V,x,dx,m,j,k,m);
GG[j][k]= z; z=0;}}
for(j=0;j<=3;j++) y += GG[j][j]/2;
for(j=0;j<=3;j++) GG[j][j] = GG[j][j] - y;
}
#ifndef FOUR_COMPONENTS
double TGG(d GG[][4], d x[], d dx[])
{ d y = 0; int j; for(j=0;j<=3;j++) y += GG[j][j]; return y;}
#endif
/* double contderV (double (*V[][4])(double x[]), double x[], double dx[], int c, int j, int k)*/
/* RM2lm = Pijm Pjli - Piji Pjlm = Vai;i ETAaa Val;m - Vai;m ETAaa Val;i */
double RM2lm(double (*V[][4])(), double x[], double dx[],int l, int m)
{double z=0;int j; int k;
fjk z+= contderV(V,x,dx,j,k,k) * ETA[j] * contderV(V,x,dx,j,l,m) -
contderV(V,x,dx,j,k,m) *ETA[j] * contderV(V,x,dx,j,l,k);}}return z;}
/*Contravariant NGGlm*/
/* NGGlm = Val;i ETAaa Vai;m - Val;i ETAaa Vam;i */
double NGGlm(double (*V[][4])(), double x[], double dx[],int l, int m)
{double z=0;int j; int k;
fjk z+= contderV(V,x,dx,j,l,k) * ETA[j] * contderV(V,x,dx,j,k,m) * gg[m](x) -
contderV(V,x,dx,j,l,k) *ETA[j] * contderV(V,x,dx,j,m,k) * gg[k](x);}}return z;}
#ifdef DEF1
double *GMAT(double dLp1, double GM[][4])/*Non used RM2lm - 1/2 delta RM2*/
{
int y = 0; int z;int i;int j;int k;
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
GM[j][k] = RM2lm(V,x,dx,j,k);
if(j == k) y += GM[j][k];}}
for(i=0;i<=3;i++) GM[i][i] = GM[i][i] - y/2;return GM;
}
/*VgVj = Vck gkk Vek;j*/
double VgVj (double (*V[][4])(), d x[], d dx[], int c, int e,int j)
{d z = 0;int i;
for(i=0;i<=3;i++)
z += V[c][i](x) * g[i](x) * contderV(V,x,dx,e,i,j);
return z;}
/*SRdgVVjj = (sqrt(-|g|) Vck Vek;j),j)*/
double SRdgVVjj (d (*f)(), d x[], d dx[], int c, int e)
{ d z = 0; d X1[4]; d X2[4]; int j;
for(j=0;j<=3;j++)
X1[j]=X2[j]=x[j];
for(j=0;j<=3;j++)
{
X1[j] = X1[j] - dx[j]/2;
X2[j] = X2[j] + dx[j]/2;
z += (sqrt(- dg(X2)) * f(V,X2,dx,c,e,j) * gg[j](X2) - sqrt(- dg(X1)) * f(V,X1,dx,c,e,j) * gg[j](X1))/dx[j] ;
}
return z;}
/* VgVjgj = (Vck Vek;j);j*/
double VgVjgj (d (*f)(), d x[], d dx[],int c, int e)
{d y = 0; d z = 0; d X1[4]; d X2[4]; int j; int k;
for(j=0;j<=3;j++)
X1[j]=X2[j]=x[j];
for(j=0;j<=3;j++)
{
X1[j] = X1[j] - dx[j]/2;
X2[j] = X2[j] + dx[j]/2;
y += (f(V,X2,dx,c,e,j) - f(V,X1,dx,c,e,j))/dx[j] * gg[j](x) ;
for(k=0;k<=3;k++)
z +=G[k][j][j](x) * f(V,x,dx,c,e,k) * gg[j](x);
}
z = y - z; return z;}
#endif DEF1
/*double mixderMV(d (*contderV)(d (*V[][4])(d x[]),d x[],d dx[],int c,int j,int k),d (*V[][4])(), d x[],d dx[],int c,int j,int k,int l)*/
/*Added 28.5.91*/
double AncontRM00(double rs, double r){ double z; z=AnaliticontRM00; return z;}
double AncontEg0(double rs, double r){ double z; z=AnaliticontEg0; return z;}
void main (void)
{
int c;
int i;
int j;
int k;
int m;
int n;
double z;
double y;
double GM[4][4];
double G1[4][4]; /*FOUR COMPONENTS of the EINSTEIN Tensor*/
double G2[4][4];
double G3[4][4];
double G4[4][4];
double TG1; /* Auxiliar for Gx[4][4]*/
double TG2;
double TG3;
double TG4;
char ch[4];
static char buf[30];
char *buf2 = "?";
char *buf3 = "W1 enabled";
d GG[4][4];
d NGG[4][4];
d L1 = 7e10;
d L2 = 1e12;
d idx = 1e-15;
d zz[4];
/*Save original tetrads*/
d (*W1[4][4])() ;
d (*Vx[4][4])() ;
fjk W1[j][k] = W[j][k];}}
fjk Vx[j][k] = V[j][k];}}
a1:
/*Ask for parameter values*/
fputs("This version differs from Q in that GM was replaced by RM\n",stdout);
fputs(" Vai;jk was replaced by AnaliticmixRMjj/2\n",stdout);
fputs(" and 6 was replaced by NGGlm\n",stdout);
fputs("13 Integral is calculated with TG = 1/2k RG\n",stdout);
fputs("rs = ",stdout);
fputs(gcvt(rs, 12, buf),stdout);fputs(" rs = ",stdout);
gets(buf);
if (buf[0] != '')
rs = atof(buf);
fputs("r = ",stdout);
fputs(gcvt(r, 12, buf),stdout);fputs(" r = ",stdout);
gets(buf);
if (buf[0] != '')
r = atof(buf);
fputs("dr = ",stdout);
fputs(gcvt(dx[1], 12, buf),stdout);fputs(" dr = ",stdout);
gets(buf);
if (buf[0] != '')
dx[1] = atof(buf);
fputs("dx[2] = ",stdout);fputs(gcvt(dx[2],12,buf),stdout);
fputs(" dx[2] = ",stdout);
gets(buf);
if (buf[0] != '')
dx[2] = atof(buf);
fputs("dx[3] = ",stdout);
fputs(gcvt(dx[3], 12, buf),stdout); fputs(" dx[3] = ",stdout);
gets(buf);
if (buf[0] != '')
dx[3] = atof(buf);
fputs("First Lorenz parameter = ", stdout); fputs(gcvt(Lp1, 12, buf),stdout);
fputs(" Lp1 = ",stdout);gets(buf); if(buf[0] != '') Lp1 = atof(buf);
fputs("Second Lorenz parameter = ", stdout); fputs(gcvt(Lp2, 12, buf),stdout);
fputs(" Lp2 = ",stdout);gets(buf); if(buf[0] != '') Lp2 = atof(buf);
fputs("Third Lorenz parameter = ", stdout); fputs(gcvt(Lp3, 12, buf),stdout);
fputs(" Lp3 = ",stdout);gets(buf); if(buf[0] != '') Lp3 = atof(buf);
fputs("Fourth Lorenz parameter = ", stdout); fputs(gcvt(Lp4, 12, buf),stdout);
fputs(" Lp4 = ",stdout);gets(buf); if(buf[0] != '') Lp4 = atof(buf);
fputs("Fifth Lorenz parameter = ", stdout); fputs(gcvt(Lp5, 12, buf),stdout);
fputs(" Lp5 = ",stdout);gets(buf); if(buf[0] != '') Lp5 = atof(buf);
fputs("6th Lorenz parameter = ", stdout); fputs(gcvt(Lp6, 12, buf),stdout);
fputs(" Lp6 = ",stdout);gets(buf); if(buf[0] != '') Lp6 = atof(buf);
fputs("Low limit of integration = ", stdout); fputs(gcvt(L1, 12, buf),stdout);
fputs(" L1 = ",stdout);gets(buf); if(buf[0] != '') L1 = atof(buf);
fputs("High limit of integration = ", stdout); fputs(gcvt(L2, 12, buf),stdout);
fputs(" L2 = ",stdout);gets(buf); if(buf[0] != '') L2 = atof(buf);
fputs("Integral increment = ", stdout); fputs(gcvt(idx, 12, buf),stdout);
fputs(" idx = ",stdout);gets(buf); if(buf[0] != '') idx = atof(buf);
/*Print parameter values*/
fputs("Lorentz transformation = ",stdout);fputs(buf2,stdout);fputs("\n",stdout);
fputs("rs = ",stdout); fputs(gcvt(rs,12,buf),stdout);
fputs(" r = ",stdout); fputs(gcvt(r,12,buf),stdout);
fputs(" dx[1] = ", stdout);fputs(gcvt(dx[1],12, buf), stdout);
fputs(" dx[2] = ", stdout);fputs(gcvt(dx[2],12, buf), stdout);
fputs(" dx[3] = ", stdout); fputs(gcvt(dx[3], 12, buf), stdout);fputs("\n",stdout);
fputs(" Lp1 = ",stdout); fputs(gcvt(Lp1,12,buf),stdout);
fputs(" Lp2 = ",stdout); fputs(gcvt(Lp2,12,buf),stdout);
fputs(" Lp3 = ",stdout); fputs(gcvt(Lp3,12,buf),stdout);
fputs(" Lp4 = ",stdout); fputs(gcvt(Lp4,12,buf),stdout);
fputs(" Lp5 = ",stdout); fputs(gcvt(Lp5,12,buf),stdout);
fputs(" Lp6 = ",stdout); fputs(gcvt(Lp6,12,buf),stdout);
fputs(" L1 = ",stdout); fputs(gcvt(L1,12,buf),stdout);
fputs(" L2 = ",stdout); fputs(gcvt(L2,12,buf),stdout);
fputs(" idx = ",stdout); fputs(gcvt(idx,12,buf),stdout);
fputs("\n",stdout);
fputs("rs = ",stdprn); fputs(gcvt(rs,12,buf),stdprn);
fputs(" r = ",stdprn); fputs(gcvt(r,12,buf),stdprn);
fputs(" dx[1] = ", stdprn);fputs(gcvt(dx[1],12, buf), stdprn);
fputs(" dx[2] = ", stdprn);fputs(gcvt(dx[2],12, buf), stdprn);
fputs(" dx[3] = ", stdprn); fputs(gcvt(dx[3], 12, buf), stdprn);
fputs("\n",stdprn);
fputs(" Lp1 = ",stdprn); fputs(gcvt(Lp1,12,buf),stdprn);
fputs(" Lp2 = ",stdprn); fputs(gcvt(Lp2,12,buf),stdprn);
fputs(" Lp3 = ",stdprn); fputs(gcvt(Lp3,12,buf),stdprn);
fputs(" Lp4 = ",stdprn); fputs(gcvt(Lp4,12,buf),stdprn);
fputs(" Lp5 = ",stdprn); fputs(gcvt(Lp5,12,buf),stdprn);
fputs(" Lp6 = ",stdprn); fputs(gcvt(Lp6,12,buf),stdprn);
fputs(" L1 = ",stdprn); fputs(gcvt(L1,12,buf),stdprn);
fputs(" L2 = ",stdprn); fputs(gcvt(L2,12,buf),stdprn);
fputs(" idx = ",stdprn); fputs(gcvt(idx,12,buf),stdprn);
fputs("\n",stdprn);
a0:
/*Menu of Lorentz transformations*/
fputs("Lorentz transformation = ",stdprn);fputs(buf2,stdprn);fputs("\n",stdprn);
fputs("Lorentz transformation = ",stdout);fputs(buf2,stdout);fputs("\n",stdout);
fputs("\nN No Lorentz 1 Boost1 2 Boost2 3 Boost3 4 Rot1 5 Rot2 6 Rot3 ENTER O.K.\n",stdout);
fputs("12 Boost1xBoost2 14 Rot1xRot3\n",stdout);
gets(buf);
if(buf[0] == '1'&& buf[1] == '4') goto R1R3;
if(buf[0] == '1'&& buf[1] == '2') goto BB;
if(buf[0] == '1') goto b1;
if(buf[0] == '2') goto b2;
if(buf[0] == '3') goto b3;
if(buf[0] == '4') goto r1;
if(buf[0] == '5') goto r2;
if(buf[0] == '6') goto r3;
if(buf[0] == 'N') goto nl;
if(buf[0] == '' && buf2[0] == '?') goto a0;
if(buf[0] == '') goto a00;
goto a0;
a00:
/*General Menu - The tetrads are contravariant and the tensors mixed*/
/*The Lorentz indeces are covariant*/
fputs("\n1 Paramters 2 V 3 VgV 4 Vcj,k 5 AnaliticmixRM00/2 6 NGG 7 Rjk 8 RMjk\n",stdout);
fputs("L Lorentz Matrix LT Lorentz Transformation W1 or W2 Tetrad 9 (VaiVbi;j);j\n",stdout);
fputs("10 GGjk 11 AnaliticGGjk 12 Contravariant TG00 13 Integral 14 FOUR COMPONENTS\n15 EXIT\n",stdout);
gets(buf);
if(buf[0] == 'L' && buf[1] == 'T') goto a0;
if(buf[0] == 'W' && buf[1] == '1') goto aW1;
if(buf[0] == 'W' && buf[1] == '2') goto aW2;
if(buf[0] == '1' && buf[1] == '0') goto a10;
if(buf[0] == '1' && buf[1] == '1') goto a11;
if(buf[0] == '1' && buf[1] == '2') goto a12;
if(buf[0] == '1' && buf[1] == '3') goto a13;
if(buf[0] == '1' && buf[1] == '4') goto a14;
if(buf[0] == '1' && buf[1] == '5') goto a15;
if(buf[0] == '1') goto a1;
if(buf[0] == '2') goto a2;
if(buf[0] == '3') goto a3;
if(buf[0] == '4') goto a4;
if(buf[0] == '5') goto a5;
if(buf[0] == '6') goto a6;
if(buf[0] == '7') goto a7;
if(buf[0] == '8') goto a8;
if(buf[0] == '9') goto a9;
if(buf[0] == 'L') goto L;
goto a00;
aW1:
fjk W[j][k] = W1[j][k];}}
buf3 = "W1 enabled";
buf2 = "?";
fputs(buf3,stdout);fputs("\n",stdout);
fputs(buf3,stdprn);fputs("\n",stdprn);
fputs("The tetrad is = \n",stdout);
fputs("The tetrad is = \n",stdprn);
fjk z = W[j][k](x);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
fputs("Please indicate Lorentz Transformation\n",stdout);
goto a0;
aW2:
fjk W[j][k] = W2[j][k];}}
buf3 = "W2 enabled";
buf2 = "?";
fputs(buf3,stdout);fputs("\n",stdout);
fputs(buf3,stdprn);fputs("\n",stdprn);
fputs("The tetrad is = \n",stdout);
fputs("The tetrad is = \n",stdprn);
fjk z = W[j][k](x);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
fputs("Please indicate Lorentz Transformation\n",stdout);
goto a00;
R1R3:
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
Lor = LorR1R3;
buf2 = "Rotation1 x Rotation3";
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
fputs("Lor = \n",stdout);
fputs("Lor = \n",stdprn);
fjk z = Lor(x,j,k);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
goto a00;
b1:
buf2 = "Boost1";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorB1;
goto a00;
b2:
buf2 = "Boost2";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorB2;
goto a00;
b3:
buf2 = "Boost3";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorB3;
goto a00;
BB:
buf2 = "Boost1 x Boost2";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorB1B2;
goto a00;
r1:
buf2 = "Rotation on x1";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorR1;
goto a00;
r2:
buf2 = "Rotation on x2";
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorR2;
goto a00;
r3:
fjk V[j][k] = Vx[j][k];}}/*Return to V original value*/
buf2 = "Rotation on x3";
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
Lor = LorR3;
goto a00;
nl:
Lor = NoLor;
fjk V[j][k] = W[j][k];}}
buf2 = "Lorentz transformation disabled";
fputs(buf2,stdout);fputs("\n",stdout);
fputs(buf2,stdprn);fputs("\n",stdprn);
goto a00;
#ifdef DEF2
/* Fuera de Servicio*/
z = mrs;
fputs("mrs = ",stdout);
fputs(gcvt(z, 12, buf), stdout);
fputs("\n", stdout);
z = mrs2;
fputs("mrs2 = ", stdout);
fputs(gcvt(z, 12, buf), stdout);
fputs("\n",stdout);
fputs("g = \n", stdout);
for (j=0;j<=3;j++){
z = g[j](x);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n\n", stdout);
#endif DEF2
/*Fin de "Fuera de Servicio"*/
L:
if(Lor==NoLor){NoLor();goto a00;}
fputs("L = \n",stdout);
fputs("L = \n",stdprn);
fjk z = Lor(x,j,k);
fputs(gcvt(z, 12, buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);fputs("\n",stdprn);}
goto a00;
a2:
fputs(" k\n", stdout);
fputs("V = \n", stdout);
fputs(" a\n", stdout);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = V[j][k](x);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n", stdout);
}
goto a00;
a3:
#ifdef DEF1
fputs("\n VgV =\n", stdout);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = VgV(V, V, x, j, k);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n", stdout);
}
#endif DEF1
goto a00;
a4:
fputs("derivada Vcj,k = \n", stdout);
for(c=0;c<=3;c++)
{fputs("c = ", stdout); fputs(itoa(c, buf, 10),stdout);fputs("\n", stdout);
fjk z = deriv(V[c][j], x, dx, k);
fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}
fputs("\n",stdout);}}
goto a00;
a5:
fputs(" j\n",stdout);
fputs("AnaliticmixRM /2 =\n",stdout);
fputs(" j\n",stdout);
fputs("AnaliticmixRMjj = \n",stdprn);
zz[0] = AnaliticmixRM00/2;zz[1]=AnaliticmixRM11;zz[2]=AnaliticmixRM22/2;zz[3]=AnaliticmixRM33/2;
for(j=0;j<=3;j++){
fputs(gcvt(zz[j],12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
}
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
/* for(c=0;c<=3;c++)*/
/* {*/
/* fputs(itoa(c, buf, 10), stdout);*/
/* fputs("covariant derivada Vcj;k = \n", stdout);*/
/* fjk z = contderV(V, x, dx, c, j, k);*/
/* fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}*/
/* fputs("\n",stdout);}*/
/* }*/
/* goto a00; */
a6:
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
NGG[j][k] = NGGlm(V,x,dx,j,k);
}}
fputs(" jk \n",stdout);
fputs("NGG =\n",stdout);
fputs("NGG =\n",stdprn);
fjk fputs(gcvt(NGG[j][k],12,buf),stdout); fputs(" ",stdout);
fputs(buf,stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
/* fputs("c = ",stdout); fputs(itoa (c, buf, 10), stdout);*/
/* gets(buf);*/
/* if (buf[0] != '')*/
/* c = atoi (buf);*/
/* fputs("c = ",stdout);*/
/* for(i=0;i<=3;i++)*/
/* {*/
/* fputs(itoa(c, buf, 10), stdout);fputs(", ",stdout);*/
/* fputs(itoa(i, buf, 10), stdout);*/
/* fputs(" Vcj;kl = \n", stdout);*/
/* fjk z = mixderMV(contderV, V, x, dx, c, i, j, k);*/
/* fputs(gcvt(z, 12, buf), stdout); fputs(" ",stdout);}*/
/* fputs("\n",stdout);}*/
/* }*/
goto a00;
/*Fuera de Servicio*/
#ifdef DEF2
fputs("\nGijk = \n ",stdout);
for(i=0;i<=3;i++){fjk if((z=G[i][j][k](x)) != 0) {c= i*100+j*10+k;fputs(itoa(c,buf,10),stdout);
fputs(" Gijk = ",stdout);fputs(gcvt(G[i][j][k](x),12,buf),stdout);
fputs(" ",stdout);}}}
fputs("\n",stdout);}
goto a0;
#endif DEF2
/*Fin de Fuera de Servicio*/
a7:
fputs(" j \n", stdout);
fputs("R = \n", stdout);
fputs(" l \n", stdout);
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = Rjl(mixderMV,V,x,dx,j,k);
fputs(gcvt(z, 12, buf), stdout);
fputs(" ", stdout);
}
fputs("\n", stdout);
}
goto a00;
a8:
y = 0;
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
z = RM2lm(V,x,dx,j,k);
GM[j][k] = z;
/* if(j == k) y += z;*/
}}
/* for(i=0;i<=3;i++) GM[i][i] = GM[i][i] - y/2;*/
fputs(" j \n",stdout);
fputs("RM =\n",stdout);
fputs(" k\n",stdout);
fputs("RM =\n",stdprn);
fjk fputs(gcvt(GM[j][k],12,buf),stdout); fputs(" ",stdout);
fputs(buf,stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
goto a00;
a9:
/*double VgVj (double (*V[][4])(), d x[], d dx[], int c, int e,int j)*/
/* double VgVjgj (d (*f)(), d x[], d dx[],int c, int e)*/
/*double SRdgVVjj (d (*V[][4])(), d x[], d dx[], int c, int e)*/
#ifdef DEF1
fputs("(VajVbj;k);k = \n",stdout);
fputs("(VajVbj;k);k = \n",stdprn);
fjk fputs(gcvt(VgVjgj(VgVj,x,dx,j,k),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
fputs("(sqrt(-g)VajVbj;k),k = \n",stdout);
fputs("(sqrt(-g)VajVbj;k),k = \n",stdprn);
fjk fputs(gcvt(SRdgVVjj(VgVj,x,dx,j,k),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
#endif DEF1
goto a00;
a10:
/*GGij = Gravitational part of Einstein Tensor*/
/*RGij = Pkjk;l - Pkjl;k*/
/*void GGij(d GG[][4], d (*V[][4])(), d x[], d dx[])*/
GGij(GG,V,x,dx);
fputs(" i\n",stdout);
fputs("GG = \n",stdout);
fputs(" j \n",stdout);
fputs("GGij = \n",stdprn);
fjk fputs(gcvt(GG[j][k],12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
#ifndef FOUR_COMPONENTS
fputs("Trace of GG = TGG = ", stdout);
fputs("Trace of GG = TGG = ", stdprn);
fputs(gcvt(TGG(GG, x, dx),12,buf), stdout);
fputs(buf, stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
#endif
goto a00;
a11:
fputs(" i\n",stdout);
fputs("AnaliticGG =\n",stdout);
fputs(" j\n",stdout);
fputs("AnaliticGGij = \n",stdprn);
fjk fputs(gcvt(AnaliticGG[j][k](),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);}
fputs("\n",stdout);
fputs("\n",stdprn);}
goto a00;
a12:
fputs("If r and rs are given in cm. TG00 results in gr/cm3\n",stdout);
fputs("K = ",stdout);
fputs("K = ",stdprn);
fputs(gcvt(K,12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("Contravariant GG00 = ",stdout);
fputs("Contravariant GG00 = ",stdprn);
fputs(gcvt(gg00(x)*AnaliticGG00(),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("Contravariant TG00 = ",stdout);
fputs("Contravariant TG00 = ",stdprn);
fputs(gcvt(TG00(),12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
a13:
/*Integral*/
/*d iTG00(d x[]){d z; z = - 4*PI*r*r*gg00(x) * iAnaliticGG00(x) / K ; rz*/
/*d iAnaliticGG00(d x[]){d z; z = (1 - mrs2) * (1 - mrs2)/(r * r); rz*/
/*d integral (d (*f)(), d idx, d L1, d L2){d z=0; d y[4]; d dy; int i; int n;*/
/* y[1] = L1;*/
/* while(y[1] < L2){*/
/* y[1] += dy = L1*L1*idx/2;*/
/* z+= f(y) * 2*dy;} rz*/
fputs("Analitical Calculation of Er when kTg = Rg/2) \n",stdout);
fputs("Er = sqrt(-g) V00 TG00 = ",stdout);
fputs("Er = sqrt(-g) V00 TG00 = ",stdprn);
fputs(gcvt(Er,12,buf), stdout);fputs(" ",stdout);
fputs(buf, stdprn);fputs(" ",stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
fputs("Er/En = ",stdout);fputs("E/En = ",stdprn);
fputs(gcvt(Er/En,12,buf), stdout);
fputs(gcvt(Er/En,12,buf), stdprn);
fputs("\n",stdout);
fputs("\n",stdprn);
goto a00;
a14:
/*Pijk =Vai ETAab Vbj;k (i and j contravariant)*/
/*d Pijk (d (*V[][4])(), d x[], d dx[], int i, int j, int k)*/
/*Pijkl = Pijk;l*/
/*d Pijkl (d (*V[][4])(), d x[], d dx[], int i, int j, int k, int l)*/
#ifdef FOUR_COMPONENTS
/* FOUR_COMPONENTS of EINSTEIN TENSOR - m contravariant, n covariant */
fputs("FOUR COMPONENTS of the EINSTEIN TENSOR",stdout);fputs("\n",stdout);
fputs("FOUR COMPONENTS of the EINSTEIN TENSOR",stdprn);fputs("\n",stdprn);
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
G1[m][n] = G2[m][n] = G3[m][n] = G4[m][n] = 0;}}
TG1 = TG2 = TG3 = TG4 = 0;
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
G1[m][n] += Pijkl(V, x, dx, j, m, j, n);}}}
for (j=0;j<=3;j++){
TG1 += G1[j][j];}
for (j=0;j<=3;j++){
G1[j][j] = G1[j][j] - TG1/2;}
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
G2[m][n] += -(Pijkl(V, x, dx, j, m, n, j));}}}
for (j=0;j<=3;j++){
TG2 += G2[j][j];}
for (j=0;j<=3;j++){
G2[j][j] = G2[j][j] - TG2/2;}
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
G3[m][n] += Pijk(V, x, dx, k, j, n) * Pijk(V, x, dx, j, m, k);}}}}
for (j=0;j<=3;j++){
TG3 += G3[j][j];}
for (j=0;j<=3;j++){
G3[j][j] = G3[j][j] - TG3/2;}
for (m=0;m<=3;m++){
for (n=0;n<=3;n++){
for (j=0;j<=3;j++){
for (k=0;k<=3;k++){
G4[m][n] += -(Pijk(V, x, dx, k, j, k) * Pijk(V, x, dx, j, m, n));}}}}
for (j=0;j<=3;j++){
TG4 += G4[j][j];}
for (j=0;j<=3;j++){
G4[j][j] = G4[j][j] - TG4/2;}
fputs("G1jk =",stdprn);fputs("\n",stdprn);
fputs("G1jk =",stdout);fputs("\n",stdout);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G1[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout);}
fputs("G2jk =",stdout);fputs("\n",stdout);
fputs("G2jk =",stdprn);fputs("\n",stdprn);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G2[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout);}
fputs("G3jk =",stdout);fputs("\n",stdout);
fputs("G3jk =",stdprn);fputs("\n",stdprn);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G3[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout);}
fputs("G4jk =",stdout);fputs("\n",stdout);
fputs("G4jk =",stdprn);fputs("\n",stdprn);
for(j=0;j<=3;j++){
for(k=0;k<=3;k++){
fputs(gcvt(G4[j][k], 12, buf), stdout); fputs(" ",stdout);
fputs(buf, stdprn); fputs(" ",stdprn);} fputs("\n",stdprn);fputs("\n",stdout);}
#else FOUR_COMPONENTS
fputs("FOUR COMPONENTS non defined", stdout);
#endif FOUR_COMPONENTS
goto a00;
a15:
NNPRNGRP.LIB*/
/*NNPRNGRP.LIB*/
/*NPRNGRPH.LIB with modified savegraph() and getgraph()*/
/*new getgraph() able to get only savefile saved with new savegraph()*/
/*NPRNGRPH.LIB*/
/*PRNGRPH.LIB with modified run_initgrph() and run_line_parameters() including
print option of the parameters*/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <alloc.h>
/*Codes*/
extern char IBMSpacing[10], Epsonspacing[9], spacing0[4], spacing1[5],
spacing2[5], spacing3[4], spacing4[4], Head[12]; extern int *Header;
extern char *spacing[5];
/*General Variables*/
extern char *Printline; extern char *Pline; extern int *Pcolumn;
extern unsigned char *Charac; extern unsigned long Pointcounter;
extern unsigned long Maxpoint; extern long lastcolumn; extern int ac;
extern int closeflag;
/*Graph Parameters*/
extern int Lines, Width, Pc, DDc; extern char *Graphpar;
/*Line Parameters*/
extern int full, doble; extern double maxX, maxY, minX, minY;
extern int Ptobell;
extern FILE *savefile;
/*Prototypes*/
void line_parameters(int full_line, int double_line, double max_X,
double min_X, double max_Y, double min_Y, int point_to_bell_ratio);
void initprngraph(unsigned lines, unsigned columns, unsigned margin,
int density);
void savegraph(char *filename);
void getgraph(char *filename);
void closegraph(void);
int redata(void);
void run_initgraph();
void run_line_parameters();
int Potencia(int basis, int exponent);
void printgraph(void);
void recpoint(double x, double y);
void newline(void);
void axis(double x, double y, double Xmark, double Ymark, int Type);
void initprngraph(unsigned lines, unsigned columns, unsigned margin, int density)
{
unsigned intmaxpoint;
/*Cancel previous initiation*/
if(closeflag != 0 ) closegraph();
if(lines > 80) {fputs("Lines has to be a positive integer less than 81\n",stdout);
_exit(0);}
if(columns>80) {fputs("Columns has to be a positive integer less than 81\n",stdout);
_exit(0);}
if(margin>80-columns) {fputs("Margin has to be a positive integer less than (81 - columns)\n",stdout);
_exit(0);}
if(density!=1&&density!=2&&density!=4) {fputs("Density = 1, 2 or 4 are the only allowed values\n",stdout);
_exit(0);}
Lines = (int) lines;
Width = (int) columns;
Pc = (int) margin;
DDc = density;
Printline = calloc(Width*6*DDc, 1);
if(Printline == NULL) {fputs("Insufficient Data Memory",stdout);_exit(0);}
intmaxpoint = (coreleft() - 1024)/4*4;
Pline = calloc( intmaxpoint, 1);
if(Pline == NULL) {fputs("Insufficient Data Memory",stdout);_exit(0);}
Pcolumn = (int *) (Pline + ( intmaxpoint/=4));
Charac = Pline + 3 * intmaxpoint;
Maxpoint = (long) intmaxpoint;
closeflag = 1;/*Allocated memory*/
}
void line_parameters(int full_line, int double_line, double max_X, double min_X,
double max_Y, double min_Y, int point_to_bell_ratio)
{
if(full_line!=0&&full_line!=1&&full_line!=2){
fputs("full_line = 0, 1 or 2 are the only allowed values\n",stdout); _exit(0);}
if(double_line!=0&&double_line!=1&&double_line!=2){
fputs("double_line = 0, 1 or 2 are the only allowed values\n",stdout); _exit(0);}
if(max_X<=min_X){
fputs("min_X < max_X is expected\n",stdout); _exit(0);}
/*1*/ if(min_Y == 0)minY = max_Y-(max_X-min_X)*Lines/Width*8.0/7.2;
else
/*2*/ {
/*3*/ if(max_Y<=min_Y){
/*3*/ fputs("min_Y < max_y is expected\n",stdout); _exit(0);}
/*2*/ else minY = min_Y;}
/*1*/
if(point_to_bell_ratio<0){
fputs("min_Y < a non-negative value is expected for point_to_bell_ratio\n",stdout);
_exit(0);}
full = full_line;
doble = double_line;
maxX = max_X;
minX = min_X;
maxY = max_Y;
}
void savegraph(char *filename){unsigned long i; int j;
savefile = fopen(filename, "wb");
if(savefile == NULL){fputs("I can't open the file",stdout); _exit(0);}
/*Save Graph Parameters*/
for(j=0;j<=8;j++) putc(*(Graphpar+j), savefile);
/*Save Graph Points*/
for(i=0;i<=4*Pointcounter;i++) putc(*(Pline+i),savefile);
fclose(savefile);
}
void getgraph(char *filename){unsigned long i; char a;
savefile = fopen(filename, "rb");
if(savefile == NULL){fputs("Unable to open the file\n",stdout);
_exit(0);}
Pointcounter = filelength(fileno(savefile))/4 - 2;
/*Read Graph Parameters*/
for(i=0;i<=8;i++){ *(Graphpar+i) = getc(savefile);}
Printline = calloc(Width*6*DDc, 1);
Pline = (char *) calloc(4*(int) Pointcounter, 1);
Pcolumn = (int *) (Pline +(int) Pointcounter);
Charac = Pline + 3*(int)Pointcounter;
for(i=0;i<=4*Pointcounter;i++) *(Pline + i) = getc(savefile);
closeflag = 1;/*Allocated memory*/
fclose(savefile);}
void closegraph(void){
free((void *) Pline);
free((void *) Printline);
lastcolumn = -1; Pointcounter = 0; closeflag = 0;}
int redata(void){void *psave;
psave = (void *) (Pline + (int) Pointcounter);
memcpy(psave,(void *) Pcolumn, 2* (int) Pointcounter);
psave=(void *)(Pline + 3* (int) Pointcounter);
memcpy(psave,(void *) Charac, (int) Pointcounter);
Pcolumn = (int *) (Pline + (int) Pointcounter);
Charac = Pline + 3* (int) Pointcounter;
free((void *) Pline);
if(malloc(4* (int) Pointcounter)!=Pline){
fputs("Allocation of permanent memory is forbiden between initprngraph and redata",stdout);_exit(0);}
closeflag = 1; }
void run_initgraph(){
char buf[8]; unsigned intmaxpoint; int saveDDc;
/*Cancels previous initiation*/
if(closeflag!=0) closegraph();
fputs("Graph Parameters\n",stdout);
fputs("<ENTER> to confirm present value\n",stdout);
fputs("<r> <ENTER> to return to the anterior parameter\n",stdout);
fputs("Lines = 1 to EXIT\n\n",stdout);
acx: fputs("Lines (Graphic's height - 1 Line = 1/9\") = ",stdout);
fputs(itoa(Lines,buf,10),stdout); fputs("\n",stdout);
fputs("Lines = ",stdout);if(*gets(buf)=='r')goto acx;
if(buf[0] != '')Lines = atoi(buf);if(Lines==1) _exit(0);
if(Lines>90 || Lines <=0) {fputs("It has to be a positive integer <= 90 \n",stdout);
goto acx;}
ac1: fputs("Width (Graphic's width in 1/10\") = ",stdout);
fputs(itoa(Width,buf,10),stdout); fputs("\n",stdout);
fputs("Width = ",stdout);if(*gets(buf)=='r')goto acx;
if(buf[0] != '')Width = atoi(buf);
if(Width>80 || Width<=0) {fputs("It has to be a positive integer <= 80 \n",stdout);
goto ac1;}
ac2: fputs("Margin (Graphic's left margin in 1/10\") = ",stdout);
fputs(itoa((Pc=(80-Width)/2),buf,10),stdout);fputs("\n",stdout);
fputs("Margin = ",stdout);if(*gets(buf)=='r')goto ac1;
if(buf[0] != '')Pc = atoi(buf);
if(Pc>80-Width||Pc<0) {fputs("It has to be a non-negative integer <= 80 - Width\n",stdout);
goto ac2;}
ac7: fputs("Density (number of points per surface's unit) (1,2 or 4) = ",stdout);
fputs(itoa(DDc,buf,10),stdout);fputs("\n",stdout);
fputs("Density = ",stdout);if(*gets(buf)=='r')goto ac2;
if(buf[0] != '')DDc = atoi(buf);fputs("\n",stdout);
if(DDc!=1&&DDc!=2&&DDc!=4) {fputs("1,2 and 4 are the only allowed values\n",stdout);goto ac7;}
/*Print Graph Parameters*/
fputs("\nLines = ",stdout); fputs(itoa(Lines,buf,10), stdout);
fputs(" Width = ",stdout); fputs(itoa(Width,buf,10), stdout);
fputs(" Margin = ",stdout); fputs(itoa(Pc,buf,10), stdout);
fputs(" Density = ",stdout); fputs(itoa(DDc,buf,10), stdout); fputs("\n",stdout);
Okey:
fputs("Okey?(y/n)\n",stdout); gets(buf); if(buf[0]=='n') goto acx;
if(buf[0]!='y') {fputs("y or n are tke unique accepted letters\n",stdout); goto Okey;}
Do:
fputs("\nShould I print these graph parameters? (y/n)",stdout);gets(buf);
if(buf[0]=='n') goto np1;
if(buf[0]!='y') {fputs("y or n are tke unique accepted letters\n",stdout); goto Do;}
fputs("Lines = ",stdprn); fputs(itoa(Lines,buf,10), stdprn);
fputs(" Width = ",stdprn); fputs(itoa(Width,buf,10), stdprn);
fputs(" Margin = ",stdprn); fputs(itoa(Pc,buf,10), stdprn);
fputs(" Density = ",stdprn); fputs(itoa(DDc,buf,10), stdprn); fputs("\n",stdprn);
np1:
/*Initgraph*/
Printline = calloc(Width*6*DDc, 1);
if(Printline == NULL) {fputs("Insufficient Data Memory",stdout);_exit(0);}
intmaxpoint = (coreleft() - 1024)/4*4;
Pline = calloc( intmaxpoint, 1);
if(Pline == NULL) {fputs("Insufficient Data Memory",stdout);_exit(0);}
Pcolumn = (int *) (Pline + ( intmaxpoint/=4));
Charac = Pline + 3 * intmaxpoint;
Maxpoint = (long) intmaxpoint;
closeflag = 1;/*Allocated memory*/
}
void run_line_parameters(){ char buf[8]; double save;
fputs("<ENTER> to confirm present value\n",stdout);
fputs("<r> <ENTER> to return to the anterior parameter\n\n",stdout);
goto ac0;
acc0: closegraph(); run_initgraph();
ac0: fputs("Maximum X (Value of X at the extreme right) = ",stdout);
fputs(gcvt(maxX,6,buf),stdout); fputs("\n",stdout);
fputs("Maximum X = ",stdout);
if(*gets(buf)=='r') goto acc0;
if(buf[0] != '')maxX = atof(buf);
ac4: fputs("Minimum X (Value of X at the extreme left) = ",stdout);
fputs(gcvt(minX,6,buf),stdout); fputs("\n",stdout);
fputs("Minimum X = ",stdout);if(*gets(buf)=='r')goto ac0;
if(buf[0] != '')minX = atof(buf);
if(minX>=maxX){fputs("A value smaller than Maximum X is expected\n",stdout);
goto ac4;}
ac5: fputs("Maximum Y (Value of Y at the top) = ",stdout);
fputs(gcvt(maxY,6,buf),stdout); fputs("\n",stdout);
fputs("Maximum Y = ",stdout);if(*gets(buf)=='r')goto ac4;
if(buf[0] != '') maxY = atof(buf);
ac6: fputs("Minimum Y (Value of Y at the bottom) = ",stdout);
minY = maxY-(maxX-minX)*Lines/Width*8.0/7.2;
fputs(gcvt(minY,6,buf),stdout); fputs("\n",stdout);
fputs("This value of Minimum Y corresponds to Y/X = 1\n",stdout);
fputs("Minimum Y = ",stdout);if(*gets(buf)=='r')goto ac5;
if(buf[0] != '') {save = minY; minY = atof(buf);}
if(minY>=maxY){fputs("A value smaller than Maximum Y is expected\n",stdout);
minY = save; goto ac6;}
ac8: fputs("Full line (Consecutive points joined by a straight line - 0, 1 or 2) = ",stdout);
fputs(itoa(full,buf,10),stdout);fputs("\n",stdout);
fputs("Full line = ",stdout);if(*gets(buf)=='r')goto ac6;
if(buf[0] != '')full = atoi(buf);
if(full!=1&&full!=0&&full!=2) {fputs("0, 1 and 2 are the only allowed values\n",stdout);
goto ac8;}
ac9: fputs("Line Width (0, 1 or 2) = ",stdout);
fputs(itoa(doble,buf,10),stdout);fputs("\n",stdout);
fputs("Line Width = ",stdout);if(*gets(buf)=='r')goto ac8;
if(buf[0] != '')doble = atoi(buf);
if(doble!=1&&doble!=0&&doble!=2) {fputs("0,1 and 2 are the only allowed values\n",stdout);
goto ac9;}
ac10: fputs("Ptobell (One bell for each group of Ptobell out-of-graph points) = ",stdout);
fputs(itoa(Ptobell,buf,10),stdout);fputs("\n",stdout);
fputs("0 for no bell\n",stdout);
fputs("Ptobell = ",stdout);if(*gets(buf)=='r')goto ac9;
if(buf[0] != '') Ptobell = atoi(buf);
/*Print Line Parameters*/
fputs("\nfull = ",stdout); fputs(itoa(full,buf,10), stdout);
fputs(" double = ",stdout); fputs(itoa(doble,buf,10), stdout);
fputs(" maxX = ",stdout); fputs(gcvt(maxX,10,buf), stdout);
fputs(" minX = ",stdout); fputs(gcvt(minX,10,buf), stdout); fputs("\n",stdout);
fputs("maxY = ",stdout); fputs(gcvt(maxY,10,buf), stdout);
fputs(" minY = ",stdout); fputs(gcvt(minY,10,buf), stdout);
fputs(" Ptobell = ",stdout); fputs(itoa(Ptobell,buf,10), stdout); fputs("\n",stdout);
Okey:
fputs("Okey?(y/n)\n",stdout); gets(buf); if(buf[0]=='n') goto ac0;
if(buf[0]!='y') {fputs("y or n are tke unique accepted letters\n",stdout); goto Okey;}
Do:
fputs("\nShould I print these line parameters? (y/n)",stdout);gets(buf);
if(buf[0]=='n') goto np2;
if(buf[0]!='y') {fputs("y or n are tke unique accepted letters\n",stdout); goto Do;}
fputs("\nfull = ",stdprn); fputs(itoa(full,buf,10), stdprn);
fputs(" double = ",stdprn); fputs(itoa(doble,buf,10), stdprn);
fputs(" maxX = ",stdprn); fputs(gcvt(maxX,10,buf), stdprn);
fputs(" minX = ",stdprn); fputs(gcvt(minX,10,buf), stdprn); fputs("\n",stdprn);
fputs("maxY = ",stdprn); fputs(gcvt(maxY,10,buf), stdprn);
fputs(" minY = ",stdprn); fputs(gcvt(minY,10,buf), stdprn);
fputs(" Ptobell = ",stdprn); fputs(itoa(Ptobell,buf,10), stdprn); fputs("\n",stdprn);
np2:;
}
int Potencia(int basis, int exponent){int j; int z=1;
for(j=1;j<=exponent;j++) z*=basis; return z;}
void printgraph(void){int i,j,k;int WIDTHH, PCC;
/* fputs (Epsonspacing,stdprn);*/
putc('\xD',stdprn);
WIDTHH =Width*6*DDc;
PCC = Pc*6;
for(k=Lines*(DDc - DDc/4)-1;k>=0;k--){
for(i=0;i<Pointcounter;i++)
{
if(*(Pline + i) == k){
*(Printline + *(Pcolumn+i)) |= *(Charac + i);
if(*(Printline + *(Pcolumn+i)) == '\x1A')
*(Printline + *(Pcolumn+i))-=2;
}
}
if(k%(DDc - DDc/4)!=0)fputs(spacing[DDc-1],stdprn);
else fputs(spacing[DDc - 1/DDc],stdprn);
/*Pass over the margin*/
Header[1] = Pc*6;
for(i=0;i<4;i++) putc(Head[i],stdprn);
for(i=0;i<PCC;i++) putc(0,stdprn);
/*Print the line*/
*(Header+(2+DDc/2*4)/2) = WIDTHH;
for(i=0;i<4;i++) putc(Head[i+DDc/2*4],stdprn);
for(i=0;i<WIDTHH;i++) {
putc(*(Printline + i),stdprn);
*(Printline + i) = 0;
}
putc('\xA',stdprn); putc('\xD',stdprn);
}
putc('\x1B',stdprn); putc('\x40',stdprn);
}
void recpoint(double x, double y){long columna=0, line=0; int subline=0, z=0;
long newcolumn=0, Tl=0;char Flag = 0;
long maxdif, mindif, absmaxdif, newTl, dx, dy, j; int i;
long *L1; long *L2; extern unsigned long Maxpoint;
static long lastTl;
int DDc4, DDc8, DOBLEE, DOBLEL, FULLE, colDOBLEE; double MAXXMINX;
MAXXMINX = (maxX-minX)/(Width*6*DDc-1);
DDc4 = DDc - DDc/4;
if(x>maxX || x<minX ) {lastcolumn = -1;
if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
else
/*-2*/ {if(y>maxY || y<minY) {lastcolumn = -1;if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
else
/*-1*/ {
x-=minX; y-=minY;
columna = (long)(x/MAXXMINX+0.5);
line = (Tl=(long)(y/(maxY-minY)*(Lines*8*DDc4-1)+0.5))/8/DDc4*DDc4;/*Number of line multiple of DDc */
subline = (int) Tl%(8*DDc4); line += subline%DDc4;
subline/=DDc4;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) = line;
*(Pcolumn + (int) Pointcounter) = (int) columna;
*(Charac + (int) Pointcounter++) += (z=Potencia(2,subline));
newcolumn = columna;/*for full line*/
newTl = Tl;/* Total number of sublines*/
/*Double line*/
if(doble > 0)
/*0*/ {
DOBLEE = doble/2+DDc/4 +1;
DOBLEL = doble/2*DDc/4 +1;
/*1*/ if(columna >= DOBLEE) {
colDOBLEE = columna - DOBLEE;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) = line;
*(Pcolumn + (int) Pointcounter) = (int) columna - DOBLEE;
*(Charac + (int) Pointcounter++) += z;
/*1*/ } else {if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
/*5*/ if(Tl >= DOBLEL){
line = (Tl - DOBLEL)/8/DDc4*DDc4;/*Number of line multiple of DDc */
subline = ( (int) Tl - DOBLEL)%(8*DDc4); line += subline%DDc4;
subline/=DDc4;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) = line;
*(Pcolumn + (int) Pointcounter) = (int) columna;
*(Charac + (int) Pointcounter++) = Potencia(2,subline);
/*5*/ } else {if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
/*0*/ }
/*End of double line*/
/*Full line*/
/* FULLE = 1 + DDc/4 + doble + doble * (DDc/4);*/
FULLE = 1 + DDc/4;
if(full == 2) FULLE += DDc*2;
if(full>0 && lastcolumn >= 0)
/*00*/ { dx = newcolumn - lastcolumn; dy = newTl - lastTl;
if(labs(dx)>FULLE||labs(dy)>FULLE)
/*01*/ {
columna = lastcolumn; Tl = lastTl;
maxdif = dx; mindif = dy; L1 = &Tl; L2 = &columna;
if(labs(dy)>labs(dx))
{
maxdif = dy; mindif = dx; L1 = &columna; L2 = &Tl; }
absmaxdif = labs(maxdif);
for(j=FULLE;j < absmaxdif; j+=FULLE)
/*02*/ {
columna = lastcolumn; Tl = lastTl; Flag = 0;
*L1+= mindif*j/absmaxdif;
*L2+=maxdif/absmaxdif*j;
line = Tl/8/DDc4*DDc4;/*Multiple of DDc number of line*/
subline = (int) Tl%(8*DDc4); line += subline%DDc4;
subline/=DDc4;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) =(char) line;
*(Pcolumn + (int) Pointcounter) = (int) columna;
*(Charac + (int) Pointcounter++) +=(z= Potencia(2,subline));
/*Double-full line*/
/*0*/ if(doble > 0){
/*1*/ if(columna >=DOBLEE) {
colDOBLEE = columna - DOBLEE;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) = line;
*(Pcolumn + (int) Pointcounter) = (int) columna-DOBLEE;
*(Charac + (int) Pointcounter++) += z;
/*1 Taken from there*/} else {if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
/*5*/ if(Tl>=DOBLEL){
line = (Tl-DOBLEL)/8/DDc4*DDc4;/*Multiple of DDc number of line*/
subline = ( (int) Tl-DOBLEL)%(8*DDc4); line += subline%DDc4;
subline/=DDc4;
if(Pointcounter > Maxpoint-1){fputs("Too much points",stdout);_exit(0);}
*(Pline + (int) Pointcounter) = line;
*(Pcolumn + (int) Pointcounter) = (int) columna;
*(Charac + (int) Pointcounter++) += Potencia(2,subline);
/*5*/ } else {if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}
/*1 } else {if(Ptobell!=0 && ac++%Ptobell == 0) putc(7,stdout);}*//*Taken from here*/
/*0*/ }
/*02*/ }
/*01*/ }
/*00*/ }
lastcolumn = newcolumn; lastTl = newTl;
/*-1*/ }
/*-2*/ }
}
/*End of recpoint */
void newline(void){ ac = Ptobell -1; recpoint(maxX+1, 0);}
void axis(double x, double y, double Xmark, double Ymark, int Type){double save1, save2, save3, save4;
double u, v, w, wFULLE, xmarke, ymarke;
int WIDTHH, FULLE, FULLEY, LINESS, savefull, save5, i;
save5 = doble; savefull=full;
save1 = maxX; save2 = maxY; save3 = minX; save4 = minY;
full = 0;
doble = 0;
WIDTHH = Width*6*DDc;
LINESS = Lines*8*(DDc-DDc/4);
FULLE = 1 + DDc/4;
FULLEY = 1 + DDc/4*DDc/2;
if (Type == 0){/*x, y and respective marks are coordinates*/
x-=minX; y-=minY;
v = (int)(x/(maxX-minX)*(WIDTHH-1)+0.5);
w = (int)(y/(maxY-minY)*(LINESS-1)+0.5);
xmarke =(int)(Xmark/(maxX-minX)*(WIDTHH-1)+0.5);
ymarke = (int)(Ymark/(maxY-minY)*(LINESS-1)+0.5);}
else {/* x and y are column and line*/
v = x; w = y; xmarke = Xmark; ymarke = Ymark;}
maxX =WIDTHH - 1; maxY =LINESS-1; minX = 0; minY = 0;
/*Axis X*/
u = 0.0;
wFULLE = w + FULLE;
for(i=0;i<WIDTHH;i+=FULLE){
recpoint(u,wFULLE);
recpoint(u,w);
if(xmarke!=0 && abs((int) (u-v)) % (int) xmarke < FULLE)
{ recpoint(u, wFULLE + FULLE); recpoint(u, w - FULLE); }
u+=FULLE;}
/*axis Y*/
newline();
u = 0.0;
for(i=0;i<LINESS;i+=FULLE){
recpoint(v+FULLEY,u);
recpoint(v,u);
if(ymarke!=0 && abs((int) (u-w)) % (int) ymarke < FULLE)
{ recpoint(v + 2 * FULLEY , u); recpoint(v - FULLEY, u); }
u+=FULLE;}
maxX = save1; maxY = save2; minX = save3; minY = save4;
full = savefull; doble = save5;}
/*End of NPRNGRPH.LIB*/
Analitic Calculations and Graphics of Experimental Facts and
/*Analitic Calculations and Graphics of Experimental Facts and ..."*/
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "prngrph.h"
#define mrs (1.0 - 1.0/r)
#define mrs2 sqrt(mrs)
#define d double
#define rz return z;}
#define PI 3.1415927
#define K (8*PI*7.425*1e-29) /*GN/c2 Einstein Gravitational Constant in cm/gr*/
#define Gn 7.425e-29
#define M (1/(2*Gn))
#define R r /*Source Radious */
#define EnM (-0.25/R) /*Newton Gravitational Energy per unite mass*/
#define EgM (2*(log(2*mrs2/(1+mrs2)) + 1/(1+mrs2) - 0.5)) /* Conserved Gravitati
ona Energy per unite mass Integral*/
#define EmgM (-(1-mrs2)/(1+mrs2))/*Invariant Gravitational Energy per unite mass
Integral*/
#define MgM (2*(1/(1+mrs2)+log(1+mrs2)-0.5-log(2)))/*Covariant Gravitational En
ergy per unite mass Integral*/
#define Ve sqrt(1.0/r)
#define DEg (log(4*mrs/(1+mrs2)/(1+mrs2)) + (1-mrs)/(mrs2+mrs) + 1/mrs2 - 1/mrs)
/*d(contEg0)/dM)*/
#define V sqrt(1 - (1+mrs*DEg)*(1+mrs*DEg))
#define P (mrs2/(1+mrs*DEg))/*Scalar Dust Energy*/
/*DEg2 and V2 obtained from Tg=1/2 Rg*/
#define DEg2 (1 - log(2*mrs2/(1+mrs2)) - 1/mrs2 + (1-mrs2)/2/mrs - (1+mrs2)*(1-m
rs)/4/mrs/mrs)
#define V2 sqrt(1 - (1+mrs*DEg2)*(1+mrs*DEg2))/*From Tg=1/2 Rg*/
void main (void)
{
int i;
int j;
double x;
double y;
double y1;
double r=1;
double z;
double u;
double v;
double r0=0.0; double EmgM0=-2.0;
double BeginX = 1.01;
double EndX = 5.2;
int full1 = 1;
int doble1 = 0;
int j1 = 1000;
int full2 = 2;
int doble2 = 0;
int j2 = 50;
int full3 = 0;
int doble3 = 2;
int j3 = 2000;
int full4 = 1;
int doble4 = 0;
int j4 = 50;
int full5 = 0;
int doble5 = 0;
int j5 = 50;
static char buf[30];
np0:
fputs("\n1 Do Graph 2 Get Graph 3 Analitical Calculations E EXIT\n",stdout);
gets(buf);
if(buf[0]=='1') goto np1;
if(buf[0]=='2') goto GD;
if(buf[0]=='3') goto a1;
if(buf[0]=='E') goto E;
fputs("The only accepted characters are 1, 2, 3 or E",stdout); goto np0;
np1:
run_initgraph();
np2:
run_line_parameters();
np3:
fputs("\nGraph Menu\n",stdout);
fputs("\n1 Conserved Eg/M and En/M 2 Velocities \n",stdout);
fputs("3 Graph Parameters 4 Line Parameters C Analitic Calculation E Exit\n",s
tdout); gets(buf);
if(buf[0]=='1') goto l1;
if(buf[0]=='2') goto l2;
if(buf[0]=='3') {closegraph(); goto np1;}
if(buf[0]=='4') goto np2;
if(buf[0]=='C') {closegraph(); goto a1;}
if(buf[0]=='E') {closegraph(); goto E;}
fputs("\nDigits 1 to 4, and C and E are the only accepted entries\n",stdout);
goto np3;
l1:
/*Conserved Relativistic Gravitational Energy for Unit Mass */
fputs("\nGraph of the Conserved Gravitational Energy Eg/M and Newton Gravitation
al Energy\n",stdout);
fputs("En/M per Unit Mass against R/2MG\n",stdout);
fputs("\nLine Parameters for Eg/M (Contravariant)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("Begin with R/2MG = ",stdout);fputs(gcvt(x=BeginX,10,buf),stdout);
fputs(" End with R/2MG = ",stdout); fputs(gcvt(y1=EndX,10,buf),stdout);
fputs("\nfull = ",stdout); fputs(itoa(full=full1,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble1,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=j1,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l11;
fputs("<ENTER> to confirm previous value\n",stdout);
again1:
fputs("Begin with R/2MG = ",stdout);gets(buf);if(buf[0]!='')BeginX=x=atof(buf);
if(x<minX || x>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again1;}
again2:
fputs("End with R/2MG = ",stdout);gets(buf);if(buf[0]!='')EndX=y1=atof(buf);
if(y1<minX || y1>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again2;}
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full1=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble1=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=j1=atoi(buf);
l11:
fputs("\nShould I print first line parameters (Eg/M)?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l12;
fputs("\nFirst Line Parameters (Eg/M)\n",stdprn);
fputs("Begin with R/2MG = ",stdprn);fputs(gcvt(BeginX,10,buf),stdprn);
fputs("End with R/2MG = ",stdprn);fputs(gcvt(EndX,10,buf),stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l12:
for(i=0;i<j;i++){
r = x + (y1-1)/(j-1)*i;
recpoint(r, EgM);}
newline();
fputs("READING Eg/M line characteristic",stdout);
fputs("\ny = -1,75 (<ENTER> to comfirm) y = ",stdout); y = -1.75; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points = 10 (<ENTER> to comfirm) No. of Points = ",stdout); j =
10; gets(buf);
if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print READING first line parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l19;
fputs("\nREADING First Line Parameters\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l19:
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
recpoint(z, y);}
newline();
/*ARROW*/
fputs("\nArrow x = 1.025 (<ENTER> to confirm) x = ",stdout); x = 1.025;
gets(buf);if(buf[0]!='') x = atof(buf);
fputs("\nArrow y = -1.97 (<ENTER> to confirm) y = ",stdout); y = -1.97;
gets(buf);if(buf[0]!='') y = atof(buf);
full = 1;
recpoint(x, y);
recpoint(x, minY);
recpoint(1, y);
recpoint(x+x-1, y);
recpoint(x, minY);
newline();
/*Second line*/
fputs("\nLine Parameters for En/M (Invariant)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("full = ",stdout); fputs(itoa(full=full2,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble2,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=j2,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l21;
fputs("<ENTER> to confirm previous value\n",stdout);
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full2=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble2=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=j2=atoi(buf);
l21:
fputs("\nShould I print second line parameters (En/M)?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l22;
fputs("\nSecond Line Parameters\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l22:
for(i=0;i<j;i++){
r = 1 + (y1-1)/(j-1)*i;
recpoint(r, EnM);}
newline();
fputs("READING En/M line characteristic",stdout);
fputs("\ny = -1.03 (<ENTER> to comfirm) y = ",stdout); y = -1.00; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points (<ENTER> to comfirm) = ",stdout);
fputs(itoa(j=j/4,buf,10),stdout);
fputs("No. of Points = ",stdout); gets(buf);if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print Reading second line parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l201;
fputs("\nREADING Second Line Parameters\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l201:
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
recpoint(z, y);}
newline();
/*Third line*/
fputs("\nLine Parameters for Emg/M (Invariant)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("full = ",stdout); fputs(itoa(full=full3,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble3,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=j3,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l31;
fputs("<ENTER> to confirm previous value\n",stdout);
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full3=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble3=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=j3=atoi(buf);
l31:
fputs("\nShould I print third line parameters (Emg)?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l32;
fputs("\nThird Line Parameters (Invariant Emg/M)\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l32:
r0=0.0;EmgM0=-2.0;
for(i=0;i<j;i++){
r = 1 + (y1-1)/(j-1)*i;
if(r-r0>0.15||EmgM-EmgM0>0.07){r0=r;EmgM0=EmgM;
recpoint(r, EmgM);}}
newline();
fputs("Reading Emg/M line characteristic",stdout);
fputs("\ny = -1.51 (<ENTER> to comfirm) y = ",stdout); y = -1.5; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points (<ENTER> to comfirm) = ",stdout);
fputs(itoa(j=j/4,buf,10),stdout);
fputs("No. of Points = ",stdout); gets(buf);if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print Reading third line parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l301;
fputs("\nREADING Third Line Parameters Emg/M\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l301:
r0=0.0;
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
if(z-r0>0.15){r0=z;
recpoint(z, y);}}
newline();
/*Fourth line*/
fputs("\nLine Parameters for Mg/M (Invariant)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("full = ",stdout); fputs(itoa(full=full4,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble4,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=j4,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l41;
fputs("<ENTER> to confirm previous value\n",stdout);
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full4=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble4=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=j4=atoi(buf);
l41:
fputs("\nShould I print fourth line parameters (Mg/M)?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l42;
fputs("\nFourth Line Parameters (Mg/M)\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l42:
for(i=0;i<j;i++){
r = 1 + (y1-1)/(j-1)*i;
if(i%3==2){newline();continue;}
recpoint(r, MgM);}
newline();
fputs("Reading Mg/M line characteristic",stdout);
fputs("\ny = -1.27 (<ENTER> to comfirm) y = ",stdout); y = -1.25; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points (<ENTER> to comfirm) = ",stdout);
fputs(itoa(j=j/4,buf,10),stdout);
fputs("No. of Points = ",stdout); gets(buf);if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print Reading fourth (MgM) line parameters?(y/n)",stdout);gets
(buf);
if(buf[0]=='n') goto l401;
fputs("\nREADING Fourth Line Parameters Mg/M\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l401:
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
if(i%3==2){newline();continue;}
recpoint(z, y);}
newline();
/*Fifth line - x = 1*/
fputs("Line Parameters for the vertical x = 1 - <ENTER> to confirm",stdout);
fputs("\nfull = 0 ",stdout); full = 0; gets(buf);if(buf[0]!='')full=atoi(buf);
fputs("doble = 0 doble = ",stdout); doble = 0;
gets(buf); if(buf[0]!='') doble=atoi(buf);
fputs("Number of points = 50 (<ENTER> to confirm) N. of Points = ",stdout);
j=50; gets(buf);if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print fifth line parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l17;
fputs("\nFifth Line Parameters (Vertical x = 1\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l17:
for(i=0;i<=j;i++){
r = minY/j*i;
recpoint(1, r);}
newline();
Axis:
fputs("\nAxis Parameters\n",stdout);
fputs("\nAxis?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l13;
fputs("Y axis coordinate = ",stdout);fputs(gcvt(x=0.0,10,buf),stdout);
fputs(" Y axis coordinate = ",stdout);gets(buf);
if(buf[0]!='')x = atof(buf);
fputs("X axis abscissa = ",stdout);fputs(gcvt(y=0.0,10,buf),stdout);
fputs(" X axis abscissa = ",stdout);gets(buf);
if(buf[0]!='')y = atof(buf);
fputs("Xmark = ",stdout); fputs(gcvt(u=1.0,10,buf),stdout);
fputs(" Xmark = ",stdout);gets(buf);
if(buf[0]!='')u = atof(buf);
fputs("Ymark = ",stdout);fputs(gcvt(v=0.25,10,buf),stdout);
fputs(" Ymark = ",stdout);gets(buf);
if(buf[0]!='')v = atof(buf);
/*Print Axes Parameters*/
fputs("Yaxis = ",stdout); fputs(gcvt(x,10,buf),stdout);
fputs(" Xaxis = ",stdout); fputs(gcvt(y,10,buf),stdout);
fputs(" Xmark = ",stdout); fputs(gcvt(u,10,buf),stdout);
fputs(" Ymark = ",stdout); fputs(gcvt(v,10,buf),stdout);
fputs("\nShould I print the axes parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l15;
fputs("\nYaxis = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Xaxis = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Xmark = ",stdprn); fputs(gcvt(u,10,buf),stdprn);
fputs(" Ymark = ",stdprn); fputs(gcvt(v,10,buf),stdprn);fputs("\n",stdprn);
l15:
axis(x, y, u, v, 0);
newline();
l13:
redata();/*Reduces the data*/
fputs("\nEnter Filename to Save or nn\n",stdout); gets(buf);
if(buf[0]=='n'&&buf[1]=='n') goto l16;
savefile =(FILE *) buf;
savegraph(savefile);
l16:
printgraph();
closegraph();
goto np0;
GD:
fputs("\nEnter Filename to Print or nn\n",stdout); gets(buf);
if(buf[0]=='n'&&buf[1]=='n') goto np0;
savefile = (FILE *) buf;
getgraph(savefile);
printgraph();
closegraph();
goto np0;
l2:
/*Graph of compared velocities*/
fputs("\nGraph of Compared Velocities\n",stdout);
fputs("V/c against R/2MG of a Falling Body\n",stdout);
fputs("\nLine Parameters for Ve/C (Einstein Velocity)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("maxX = ",stdout);fputs(gcvt(maxX = 5.2, 10, buf),stdout);
fputs(" minX = ",stdout);fputs(gcvt(minX = -0.05, 10, buf),stdout);
fputs(" maxY = ",stdout);fputs(gcvt(maxY = 1.05, 10, buf),stdout);
fputs(" minY = ",stdout);fputs(gcvt(minY = -0.05, 10, buf),stdout);
fputs("\nBegin with R/2MG = ",stdout);fputs(gcvt(x=BeginX = 1, 10, buf),stdout);
fputs(" End with R/2MG = ",stdout); fputs(gcvt(y1=EndX=5.2 ,10,buf),stdout);
fputs("\nfull = ",stdout); fputs(itoa(full=full1,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble1,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=50,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l11x;
fputs("<ENTER> to confirm previous value\n",stdout);
fputs("maxX = ",stdout);gets(buf);if(buf[0]!='')maxX=atof(buf);
fputs("minX = ",stdout);gets(buf);if(buf[0]!='')minX=atof(buf);
fputs("maxY = ",stdout);gets(buf);if(buf[0]!='')maxY=atof(buf);
fputs("minY = ",stdout);gets(buf);if(buf[0]!='')minY=atof(buf);
again11:
fputs("Begin with R/2MG = ",stdout);gets(buf);if(buf[0]!='')BeginX=x=atof(buf);
if(x<minX || x>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again11;}
again22:
fputs("End with R/2MG = ",stdout);gets(buf);if(buf[0]!='')EndX=y1=atof(buf);
if(y1<minX || y1>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again22;}
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full1=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble1=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=atoi(buf);
l11x:
fputs("\nShould I print Geodesic Path Velocity line parameters (Ve/c)?(y/n)",std
out);gets(buf);
if(buf[0]=='n') goto l12x;
fputs("\nGeodesic Path Velocity Line Parameters (Ve/c)\n",stdprn);
fputs("maxX = ",stdprn);fputs(gcvt(maxX, 10, buf),stdprn);
fputs(" minX = ",stdprn);fputs(gcvt(minX, 10, buf),stdprn);
fputs(" maxY = ",stdprn);fputs(gcvt(maxY, 10, buf),stdprn);
fputs(" minY = ",stdprn);fputs(gcvt(minY, 10, buf),stdprn);
fputs("Begin with R/2MG = ",stdprn);fputs(gcvt(BeginX,10,buf),stdprn);
fputs("End with R/2MG = ",stdprn);fputs(gcvt(EndX,10,buf),stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l12x:
for(i=0;i<j;i++){
r = x + (y1-1)/(j-1)*i;
if(i%3==2){newline();continue;}
recpoint(r, Ve);}
newline();
fputs("READING G.Path Velocity line characteristic",stdout);
fputs("\ny = 0.60 (<ENTER> to comfirm) y = ",stdout); y = 0.60; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points = 10 (<ENTER> to comfirm) No. of Points = ",stdout); j =
10; gets(buf);
if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print READING G.P.Velocity line parameters?(y/n)",stdout);gets
(buf);
if(buf[0]=='n') goto l19x;
fputs("\nREADING G.P.Velocity Line Parameters\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l19x:
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
if(i%3==2){newline();continue;}
recpoint(z, y);}
newline();
/*Energy Conservation Velocity*/
fputs("\nLine Parameters for V/C (Energy Conservation Velocity)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("maxX = ",stdout);fputs(gcvt(maxX, 10, buf),stdout);
fputs(" minX = ",stdout);fputs(gcvt(minX, 10, buf),stdout);
fputs(" maxY = ",stdout);fputs(gcvt(maxY, 10, buf),stdout);
fputs(" minY = ",stdout);fputs(gcvt(minY, 10, buf),stdout);
fputs("\nBegin with R/2MG = ",stdout);fputs(gcvt(x=BeginX, 10, buf),stdout);
fputs(" End with R/2MG = ",stdout); fputs(gcvt(y1=EndX,10,buf),stdout);
fputs("\nfull = ",stdout); fputs(itoa(full=full1,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble1,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=50,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l11y;
fputs("<ENTER> to confirm previous value\n",stdout);
fputs("maxX = ",stdout);gets(buf);if(buf[0]!='')maxX=atof(buf);
fputs("minX = ",stdout);gets(buf);if(buf[0]!='')minX=atof(buf);
fputs("maxY = ",stdout);gets(buf);if(buf[0]!='')maxY=atof(buf);
fputs("minY = ",stdout);gets(buf);if(buf[0]!='')minY=atof(buf);
again1x:
fputs("Begin with R/2MG = ",stdout);gets(buf);if(buf[0]!='')BeginX=x=atof(buf);
if(x<minX || x>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again1x;}
again2x:
fputs("End with R/2MG = ",stdout);gets(buf);if(buf[0]!='')EndX=y1=atof(buf);
if(y1<minX || y1>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again2x;}
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full1=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble1=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=atoi(buf);
l11y:
fputs("\nShould I print Energy Conservation Velocity line parameters (V/c)?(y/n)
",stdout);gets(buf);
if(buf[0]=='n') goto l12y;
fputs("\nEnergy Conservation velocity Line Parameters (Ve/c)\n",stdprn);
fputs("maxX = ",stdprn);fputs(gcvt(maxX, 10, buf),stdprn);
fputs(" minX = ",stdprn);fputs(gcvt(minX, 10, buf),stdprn);
fputs(" maxY = ",stdprn);fputs(gcvt(maxY, 10, buf),stdprn);
fputs(" minY = ",stdprn);fputs(gcvt(minY, 10, buf),stdprn);
fputs("Begin with R/2MG = ",stdprn);fputs(gcvt(BeginX,10,buf),stdprn);
fputs("End with R/2MG = ",stdprn);fputs(gcvt(EndX,10,buf),stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l12y:
for(i=0;i<j;i++){
r = x + (y1-x)/(j-1)*i;
recpoint(r, V);}
newline();
fputs("READING Energy Conservation Velocity line characteristic",stdout);
fputs("\ny = 0.50 (<ENTER> to comfirm) y = ",stdout); y = 0.50; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points = 10 (<ENTER> to comfirm) No. of Points = ",stdout); j =
10; gets(buf);
if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print READING E.C. Velocity line parameters?(y/n)",stdout);get
s(buf);
if(buf[0]=='n') goto l19y;
fputs("\nREADING E.C.Velocity Line Parameters\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l19y:
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
recpoint(z, y);}
newline();
goto Axis;
a1:
fputs("EMPTY\n", stdout);
a00:
fputs("\n1 EMPTY 2 Velocity 3 v(dEg/dM) 4 En/M Mg/M Emg/M Eg/M 5 P/dm\n",stdou
t);
fputs("6 EMPTY E EXIT\n",stdout);
gets(buf);
if(buf[0] == '1') goto a1;
if(buf[0] == '2') goto a2;
if(buf[0] == '3') goto a3;
if(buf[0] == '4') goto a4;
if(buf[0] == '5') goto a5;
if(buf[0] == '6') goto a6;
if(buf[0] == 'E') goto E;
goto a00;
a2:
/*Velocities*/
fputs("\nr/rs = ",stdout);
fputs(gcvt(r,12,buf),stdout);
fputs(" r/rs = ",stdout); gets(buf);if(buf[0]!='')r=atof(buf);
fputs("\nr/rs = ",stdprn);
fputs(buf,stdprn);
fputs("\nE.C. velocity V = ",stdout);fputs(gcvt(V,10,buf),stdout);
fputs(" E.C. velocity V = ",stdprn);fputs(buf,stdprn);
fputs(" G.P. velocity Ve = ",stdout);fputs(gcvt(Ve,10,buf),stdout);
fputs(" G.P. velocity Ve = ",stdprn);fputs(buf,stdprn);fputs("\n",stdprn);
fputs("\n",stdout);
fputs("\nE.C. velocity from T=1/2K Rg V2 = ",stdout);fputs(gcvt(V2,10,buf),std
out);
fputs(" E.C. velocity from T=1/2K Rg V2 = ",stdprn);fputs(buf,stdprn);
fputs("\n",stdout); fputs("\n",stdprn);
goto a00;
a3:
fputs("EMPTY\n", stdout);
goto a00;
a4:
/*Gravitational Energy Integrals*/
fputs("\nr/rs = ",stdout);
fputs(gcvt(r,12,buf),stdout);
fputs(" r/rs = ",stdout); gets(buf);if(buf[0]!='')r=atof(buf);
fputs("\nr/rs = ",stdprn);
fputs(buf,stdprn);
fputs(" En/M = ", stdout);fputs(" En/M = ", stdprn);
fputs(gcvt(EnM,12,buf),stdout);fputs(buf,stdprn);
fputs("\n(Covariant) Mg/M = 2 (1/1+mrs2 + ln(1+mrs2) - 0.5 - ln 2) \n",stdout);
fputs("Mg/M = ", stdout);fputs(" Mg/M = ", stdprn);
fputs(gcvt(MgM,12,buf),stdout);fputs(buf,stdprn);
fputs("\n", stdout);fputs("\n", stdprn);
fputs("(Inv) Emg/M = - (1 - mrs2)/(1 + mrs2)\n",stdout);
fputs("Emg/M = ", stdout);fputs("Emg/M = ", stdprn);
fputs(gcvt(EmgM,12,buf),stdout);fputs(buf,stdprn);
fputs("\nConEg/M = 2(ln(2 mrs2/(1+mrs2)) + 1/(1+mrs2) - 1/2)\n",stdout);
fputs("ConEg/M = ", stdout);fputs(" ConEg/M = ", stdprn);
fputs(gcvt(EgM,12,buf),stdout);fputs(buf,stdprn);
fputs("\n", stdout);fputs("\n", stdprn);
goto a00;
a5:
fputs("Scalar Energy of the Dust for Unite Rest Mass at Infinite P/dm", stdout)
;
fputs("\n", stdout);
fputs("\nr/rs = ",stdout);
fputs(gcvt(r,12,buf),stdout);
fputs(" r/rs = ",stdout); gets(buf);if(buf[0]!='')r=atof(buf);
fputs("\nr/rs = ",stdprn);
fputs(buf,stdprn);
fputs(" P/dm = ", stdout);fputs(" P/dm = ", stdprn);
fputs(gcvt(P,12,buf),stdout);fputs(buf,stdprn);
fputs("\n", stdout);fputs("\n", stdprn);
goto a00;
a6:
fputs("EMPTY", stdout);
fputs("\n", stdout);
goto a00;
E:
Analitic Calculations and Graphics of "Experimental Facts and …"*/
/*Analitic Calculations and Graphics of "Experimental Facts and ..."*/
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "prngrph.h"
#define mrs (1.0 - 1.0/r)
#define mrs2 sqrt(mrs)
#define d double
#define rz return z;}
#define PI 3.1415927
#define K (8*PI*7.425*1e-29) /*GN/c2 Einstein Gravitational Constant in cm/gr*/
#define Gn 7.425e-29
#define M (1/(2*Gn))
#define R r /*Source Radious */
#define EnM (-0.25/R) /*Newton Gravitational Energy per unite mass*/
#define EgM (2*(log(2*mrs2/(1+mrs2)) + 1/(1+mrs2) - 0.5)) /* Conserved Gravitati
ona Energy per unite mass Integral*/
#define EmgM (-(1-mrs2)/(1+mrs2))/*Invariant Gravitational Energy per unite mass
Integral*/
#define MgM (2*(1/(1+mrs2)+log(1+mrs2)-0.5-log(2)))/*Covariant Gravitational En
ergy per unite mass Integral*/
#define Ve sqrt(1.0/r)
#define DEg (log(4*mrs/(1+mrs2)/(1+mrs2)) + (1-mrs)/(mrs2+mrs) + 1/mrs2 - 1/mrs)
/*d(contEg0)/dM)*/
#define V sqrt(1 - (1+mrs*DEg)*(1+mrs*DEg))
#define P (mrs2/(1+mrs*DEg))/*Scalar Dust Energy*/
/*DEg2 and V2 obtained from Tg=1/2 Rg*/
#define DEg2 (1 - log(2*mrs2/(1+mrs2)) - 1/mrs2 + (1-mrs2)/2/mrs - (1+mrs2)*(1-m
rs)/4/mrs/mrs)
#define V2 sqrt(1 - (1+mrs*DEg2)*(1+mrs*DEg2))/*From Tg=1/2 Rg*/
void main (void)
{
int i;
int j;
double x;
double y;
double y1;
double r=1;
double z;
double u;
double v;
double r0=0.0; double EmgM0=-2.0;
double BeginX = 1.01;
double EndX = 5.2;
int full1 = 1;
int doble1 = 0;
int j1 = 1000;
int full2 = 2;
int doble2 = 0;
int j2 = 50;
int full3 = 0;
int doble3 = 2;
int j3 = 2000;
int full4 = 1;
int doble4 = 0;
int j4 = 50;
int full5 = 0;
int doble5 = 0;
int j5 = 50;
static char buf[30];
np0:
fputs("\n1 Do Graph 2 Get Graph 3 Analitical Calculations E EXIT\n",stdout);
gets(buf);
if(buf[0]=='1') goto np1;
if(buf[0]=='2') goto GD;
if(buf[0]=='3') goto a1;
if(buf[0]=='E') goto E;
fputs("The only accepted characters are 1, 2, 3 or E",stdout); goto np0;
np1:
run_initgraph();
np2:
run_line_parameters();
np3:
fputs("\nGraph Menu\n",stdout);
fputs("\n1 Conserved Eg/M and En/M 2 Velocities \n",stdout);
fputs("3 Graph Parameters 4 Line Parameters C Analitic Calculation E Exit\n",s
tdout); gets(buf);
if(buf[0]=='1') goto l1;
if(buf[0]=='2') goto l2;
if(buf[0]=='3') {closegraph(); goto np1;}
if(buf[0]=='4') goto np2;
if(buf[0]=='C') {closegraph(); goto a1;}
if(buf[0]=='E') {closegraph(); goto E;}
fputs("\nDigits 1 to 4, and C and E are the only accepted entries\n",stdout);
goto np3;
l1:
/*Conserved Relativistic Gravitational Energy for Unit Mass */
fputs("\nGraph of the Conserved Gravitational Energy Eg/M and Newton Gravitation
al Energy\n",stdout);
fputs("En/M per Unit Mass against R/2MG\n",stdout);
fputs("\nLine Parameters for Eg/M (Contravariant)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("Begin with R/2MG = ",stdout);fputs(gcvt(x=BeginX,10,buf),stdout);
fputs(" End with R/2MG = ",stdout); fputs(gcvt(y1=EndX,10,buf),stdout);
fputs("\nfull = ",stdout); fputs(itoa(full=full1,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble1,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=j1,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l11;
fputs("<ENTER> to confirm previous value\n",stdout);
again1:
fputs("Begin with R/2MG = ",stdout);gets(buf);if(buf[0]!='')BeginX=x=atof(buf);
if(x<minX || x>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again1;}
again2:
fputs("End with R/2MG = ",stdout);gets(buf);if(buf[0]!='')EndX=y1=atof(buf);
if(y1<minX || y1>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again2;}
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full1=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble1=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=j1=atoi(buf);
l11:
fputs("\nShould I print first line parameters (Eg/M)?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l12;
fputs("\nFirst Line Parameters (Eg/M)\n",stdprn);
fputs("Begin with R/2MG = ",stdprn);fputs(gcvt(BeginX,10,buf),stdprn);
fputs("End with R/2MG = ",stdprn);fputs(gcvt(EndX,10,buf),stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l12:
for(i=0;i<j;i++){
r = x + (y1-1)/(j-1)*i;
recpoint(r, EgM);}
newline();
fputs("READING Eg/M line characteristic",stdout);
fputs("\ny = -1,75 (<ENTER> to comfirm) y = ",stdout); y = -1.75; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points = 10 (<ENTER> to comfirm) No. of Points = ",stdout); j =
10; gets(buf);
if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print READING first line parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l19;
fputs("\nREADING First Line Parameters\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l19:
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
recpoint(z, y);}
newline();
/*ARROW*/
fputs("\nArrow x = 1.025 (<ENTER> to confirm) x = ",stdout); x = 1.025;
gets(buf);if(buf[0]!='') x = atof(buf);
fputs("\nArrow y = -1.97 (<ENTER> to confirm) y = ",stdout); y = -1.97;
gets(buf);if(buf[0]!='') y = atof(buf);
full = 1;
recpoint(x, y);
recpoint(x, minY);
recpoint(1, y);
recpoint(x+x-1, y);
recpoint(x, minY);
newline();
/*Second line*/
fputs("\nLine Parameters for En/M (Invariant)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("full = ",stdout); fputs(itoa(full=full2,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble2,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=j2,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l21;
fputs("<ENTER> to confirm previous value\n",stdout);
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full2=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble2=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=j2=atoi(buf);
l21:
fputs("\nShould I print second line parameters (En/M)?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l22;
fputs("\nSecond Line Parameters\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l22:
for(i=0;i<j;i++){
r = 1 + (y1-1)/(j-1)*i;
recpoint(r, EnM);}
newline();
fputs("READING En/M line characteristic",stdout);
fputs("\ny = -1.03 (<ENTER> to comfirm) y = ",stdout); y = -1.00; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points (<ENTER> to comfirm) = ",stdout);
fputs(itoa(j=j/4,buf,10),stdout);
fputs("No. of Points = ",stdout); gets(buf);if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print Reading second line parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l201;
fputs("\nREADING Second Line Parameters\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l201:
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
recpoint(z, y);}
newline();
/*Third line*/
fputs("\nLine Parameters for Emg/M (Invariant)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("full = ",stdout); fputs(itoa(full=full3,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble3,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=j3,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l31;
fputs("<ENTER> to confirm previous value\n",stdout);
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full3=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble3=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=j3=atoi(buf);
l31:
fputs("\nShould I print third line parameters (Emg)?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l32;
fputs("\nThird Line Parameters (Invariant Emg/M)\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l32:
r0=0.0;EmgM0=-2.0;
for(i=0;i<j;i++){
r = 1 + (y1-1)/(j-1)*i;
if(r-r0>0.15||EmgM-EmgM0>0.07){r0=r;EmgM0=EmgM;
recpoint(r, EmgM);}}
newline();
fputs("Reading Emg/M line characteristic",stdout);
fputs("\ny = -1.51 (<ENTER> to comfirm) y = ",stdout); y = -1.5; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points (<ENTER> to comfirm) = ",stdout);
fputs(itoa(j=j/4,buf,10),stdout);
fputs("No. of Points = ",stdout); gets(buf);if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print Reading third line parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l301;
fputs("\nREADING Third Line Parameters Emg/M\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l301:
r0=0.0;
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
if(z-r0>0.15){r0=z;
recpoint(z, y);}}
newline();
/*Fourth line*/
fputs("\nLine Parameters for Mg/M (Invariant)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("full = ",stdout); fputs(itoa(full=full4,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble4,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=j4,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l41;
fputs("<ENTER> to confirm previous value\n",stdout);
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full4=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble4=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=j4=atoi(buf);
l41:
fputs("\nShould I print fourth line parameters (Mg/M)?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l42;
fputs("\nFourth Line Parameters (Mg/M)\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l42:
for(i=0;i<j;i++){
r = 1 + (y1-1)/(j-1)*i;
if(i%3==2){newline();continue;}
recpoint(r, MgM);}
newline();
fputs("Reading Mg/M line characteristic",stdout);
fputs("\ny = -1.27 (<ENTER> to comfirm) y = ",stdout); y = -1.25; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points (<ENTER> to comfirm) = ",stdout);
fputs(itoa(j=j/4,buf,10),stdout);
fputs("No. of Points = ",stdout); gets(buf);if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print Reading fourth (MgM) line parameters?(y/n)",stdout);gets
(buf);
if(buf[0]=='n') goto l401;
fputs("\nREADING Fourth Line Parameters Mg/M\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l401:
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
if(i%3==2){newline();continue;}
recpoint(z, y);}
newline();
/*Fifth line - x = 1*/
fputs("Line Parameters for the vertical x = 1 - <ENTER> to confirm",stdout);
fputs("\nfull = 0 ",stdout); full = 0; gets(buf);if(buf[0]!='')full=atoi(buf);
fputs("doble = 0 doble = ",stdout); doble = 0;
gets(buf); if(buf[0]!='') doble=atoi(buf);
fputs("Number of points = 50 (<ENTER> to confirm) N. of Points = ",stdout);
j=50; gets(buf);if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print fifth line parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l17;
fputs("\nFifth Line Parameters (Vertical x = 1\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l17:
for(i=0;i<=j;i++){
r = minY/j*i;
recpoint(1, r);}
newline();
Axis:
fputs("\nAxis Parameters\n",stdout);
fputs("\nAxis?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l13;
fputs("Y axis coordinate = ",stdout);fputs(gcvt(x=0.0,10,buf),stdout);
fputs(" Y axis coordinate = ",stdout);gets(buf);
if(buf[0]!='')x = atof(buf);
fputs("X axis abscissa = ",stdout);fputs(gcvt(y=0.0,10,buf),stdout);
fputs(" X axis abscissa = ",stdout);gets(buf);
if(buf[0]!='')y = atof(buf);
fputs("Xmark = ",stdout); fputs(gcvt(u=1.0,10,buf),stdout);
fputs(" Xmark = ",stdout);gets(buf);
if(buf[0]!='')u = atof(buf);
fputs("Ymark = ",stdout);fputs(gcvt(v=0.25,10,buf),stdout);
fputs(" Ymark = ",stdout);gets(buf);
if(buf[0]!='')v = atof(buf);
/*Print Axes Parameters*/
fputs("Yaxis = ",stdout); fputs(gcvt(x,10,buf),stdout);
fputs(" Xaxis = ",stdout); fputs(gcvt(y,10,buf),stdout);
fputs(" Xmark = ",stdout); fputs(gcvt(u,10,buf),stdout);
fputs(" Ymark = ",stdout); fputs(gcvt(v,10,buf),stdout);
fputs("\nShould I print the axes parameters?(y/n)",stdout);gets(buf);
if(buf[0]=='n') goto l15;
fputs("\nYaxis = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Xaxis = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Xmark = ",stdprn); fputs(gcvt(u,10,buf),stdprn);
fputs(" Ymark = ",stdprn); fputs(gcvt(v,10,buf),stdprn);fputs("\n",stdprn);
l15:
axis(x, y, u, v, 0);
newline();
l13:
redata();/*Reduces the data*/
fputs("\nEnter Filename to Save or nn\n",stdout); gets(buf);
if(buf[0]=='n'&&buf[1]=='n') goto l16;
savefile =(FILE *) buf;
savegraph(savefile);
l16:
printgraph();
closegraph();
goto np0;
GD:
fputs("\nEnter Filename to Print or nn\n",stdout); gets(buf);
if(buf[0]=='n'&&buf[1]=='n') goto np0;
savefile = (FILE *) buf;
getgraph(savefile);
printgraph();
closegraph();
goto np0;
l2:
/*Graph of compared velocities*/
fputs("\nGraph of Compared Velocities\n",stdout);
fputs("V/c against R/2MG of a Falling Body\n",stdout);
fputs("\nLine Parameters for Ve/C (Einstein Velocity)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("maxX = ",stdout);fputs(gcvt(maxX = 5.2, 10, buf),stdout);
fputs(" minX = ",stdout);fputs(gcvt(minX = -0.05, 10, buf),stdout);
fputs(" maxY = ",stdout);fputs(gcvt(maxY = 1.05, 10, buf),stdout);
fputs(" minY = ",stdout);fputs(gcvt(minY = -0.05, 10, buf),stdout);
fputs("\nBegin with R/2MG = ",stdout);fputs(gcvt(x=BeginX = 1, 10, buf),stdout);
fputs(" End with R/2MG = ",stdout); fputs(gcvt(y1=EndX=5.2 ,10,buf),stdout);
fputs("\nfull = ",stdout); fputs(itoa(full=full1,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble1,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=50,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l11x;
fputs("<ENTER> to confirm previous value\n",stdout);
fputs("maxX = ",stdout);gets(buf);if(buf[0]!='')maxX=atof(buf);
fputs("minX = ",stdout);gets(buf);if(buf[0]!='')minX=atof(buf);
fputs("maxY = ",stdout);gets(buf);if(buf[0]!='')maxY=atof(buf);
fputs("minY = ",stdout);gets(buf);if(buf[0]!='')minY=atof(buf);
again11:
fputs("Begin with R/2MG = ",stdout);gets(buf);if(buf[0]!='')BeginX=x=atof(buf);
if(x<minX || x>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again11;}
again22:
fputs("End with R/2MG = ",stdout);gets(buf);if(buf[0]!='')EndX=y1=atof(buf);
if(y1<minX || y1>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again22;}
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full1=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble1=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=atoi(buf);
l11x:
fputs("\nShould I print Geodesic Path Velocity line parameters (Ve/c)?(y/n)",std
out);gets(buf);
if(buf[0]=='n') goto l12x;
fputs("\nGeodesic Path Velocity Line Parameters (Ve/c)\n",stdprn);
fputs("maxX = ",stdprn);fputs(gcvt(maxX, 10, buf),stdprn);
fputs(" minX = ",stdprn);fputs(gcvt(minX, 10, buf),stdprn);
fputs(" maxY = ",stdprn);fputs(gcvt(maxY, 10, buf),stdprn);
fputs(" minY = ",stdprn);fputs(gcvt(minY, 10, buf),stdprn);
fputs("Begin with R/2MG = ",stdprn);fputs(gcvt(BeginX,10,buf),stdprn);
fputs("End with R/2MG = ",stdprn);fputs(gcvt(EndX,10,buf),stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l12x:
for(i=0;i<j;i++){
r = x + (y1-1)/(j-1)*i;
if(i%3==2){newline();continue;}
recpoint(r, Ve);}
newline();
fputs("READING G.Path Velocity line characteristic",stdout);
fputs("\ny = 0.60 (<ENTER> to comfirm) y = ",stdout); y = 0.60; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points = 10 (<ENTER> to comfirm) No. of Points = ",stdout); j =
10; gets(buf);
if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print READING G.P.Velocity line parameters?(y/n)",stdout);gets
(buf);
if(buf[0]=='n') goto l19x;
fputs("\nREADING G.P.Velocity Line Parameters\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l19x:
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
if(i%3==2){newline();continue;}
recpoint(z, y);}
newline();
/*Energy Conservation Velocity*/
fputs("\nLine Parameters for V/C (Energy Conservation Velocity)\n",stdout);
fputs("Default/Previous Values\n",stdout);
fputs("maxX = ",stdout);fputs(gcvt(maxX, 10, buf),stdout);
fputs(" minX = ",stdout);fputs(gcvt(minX, 10, buf),stdout);
fputs(" maxY = ",stdout);fputs(gcvt(maxY, 10, buf),stdout);
fputs(" minY = ",stdout);fputs(gcvt(minY, 10, buf),stdout);
fputs("\nBegin with R/2MG = ",stdout);fputs(gcvt(x=BeginX, 10, buf),stdout);
fputs(" End with R/2MG = ",stdout); fputs(gcvt(y1=EndX,10,buf),stdout);
fputs("\nfull = ",stdout); fputs(itoa(full=full1,buf,10),stdout);
fputs(" doble = ",stdout); fputs(itoa(doble=doble1,buf,10),stdout);
fputs(" Number of Points = ",stdout); fputs(itoa(j=50,buf,10),stdout);
fputs("\nOkey?(y/n)\n",stdout);gets(buf);
if(buf[0]=='y') goto l11y;
fputs("<ENTER> to confirm previous value\n",stdout);
fputs("maxX = ",stdout);gets(buf);if(buf[0]!='')maxX=atof(buf);
fputs("minX = ",stdout);gets(buf);if(buf[0]!='')minX=atof(buf);
fputs("maxY = ",stdout);gets(buf);if(buf[0]!='')maxY=atof(buf);
fputs("minY = ",stdout);gets(buf);if(buf[0]!='')minY=atof(buf);
again1x:
fputs("Begin with R/2MG = ",stdout);gets(buf);if(buf[0]!='')BeginX=x=atof(buf);
if(x<minX || x>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again1x;}
again2x:
fputs("End with R/2MG = ",stdout);gets(buf);if(buf[0]!='')EndX=y1=atof(buf);
if(y1<minX || y1>maxX) {fputs("R/2MG has to be between minX and maxX\n",stdout);
goto again2x;}
fputs("full = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='')full=full1=atoi(buf)
;
fputs("doble = (0,1 or 2) ",stdout);gets(buf); if(buf[0]!='');doble=doble1=atoi(
buf);
fputs("Number of points = ",stdout); gets(buf);if(buf[0]!='')j=atoi(buf);
l11y:
fputs("\nShould I print Energy Conservation Velocity line parameters (V/c)?(y/n)
",stdout);gets(buf);
if(buf[0]=='n') goto l12y;
fputs("\nEnergy Conservation velocity Line Parameters (Ve/c)\n",stdprn);
fputs("maxX = ",stdprn);fputs(gcvt(maxX, 10, buf),stdprn);
fputs(" minX = ",stdprn);fputs(gcvt(minX, 10, buf),stdprn);
fputs(" maxY = ",stdprn);fputs(gcvt(maxY, 10, buf),stdprn);
fputs(" minY = ",stdprn);fputs(gcvt(minY, 10, buf),stdprn);
fputs("Begin with R/2MG = ",stdprn);fputs(gcvt(BeginX,10,buf),stdprn);
fputs("End with R/2MG = ",stdprn);fputs(gcvt(EndX,10,buf),stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" full = ",stdprn); fputs(itoa(full,buf,10),stdprn);
fputs(" doble = ",stdprn); fputs(itoa(doble,buf,10),stdprn);fputs("\n",stdprn
);
l12y:
for(i=0;i<j;i++){
r = x + (y1-x)/(j-1)*i;
recpoint(r, V);}
newline();
fputs("READING Energy Conservation Velocity line characteristic",stdout);
fputs("\ny = 0.50 (<ENTER> to comfirm) y = ",stdout); y = 0.50; gets(buf);
if(buf[0]!='') y = atof(buf);
fputs("Initial x = 3.0 (<ENTER> to comfirm) Initial x = ",stdout); x = 3.0; gets
(buf);
if(buf[0]!='') x = atof(buf);
fputs("Final x = 4.0 (<ENTER> to comfirm) Final x = ",stdout); r = 4.0; gets(buf
);
if(buf[0]!='') r = atof(buf);
fputs("Number of Points = 10 (<ENTER> to comfirm) No. of Points = ",stdout); j =
10; gets(buf);
if(buf[0]!='') j = atoi(buf);
fputs("\nShould I print READING E.C. Velocity line parameters?(y/n)",stdout);get
s(buf);
if(buf[0]=='n') goto l19y;
fputs("\nREADING E.C.Velocity Line Parameters\n",stdprn);
fputs("Number of points = ",stdprn); fputs(itoa(j,buf,10),stdprn);
fputs(" y = ",stdprn); fputs(gcvt(y,10,buf),stdprn);
fputs(" Initial x = ",stdprn); fputs(gcvt(x,10,buf),stdprn);
fputs(" Final x = ",stdprn); fputs(gcvt(r,10,buf),stdprn);fputs("\n",stdprn);
l19y:
for(i=0;i<j;i++){
z = x + (r-x)/(j-1)*i;
recpoint(z, y);}
newline();
goto Axis;
a1:
fputs("EMPTY\n", stdout);
a00:
fputs("\n1 EMPTY 2 Velocity 3 v(dEg/dM) 4 En/M Mg/M Emg/M Eg/M 5 P/dm\n",stdou
t);
fputs("6 EMPTY E EXIT\n",stdout);
gets(buf);
if(buf[0] == '1') goto a1;
if(buf[0] == '2') goto a2;
if(buf[0] == '3') goto a3;
if(buf[0] == '4') goto a4;
if(buf[0] == '5') goto a5;
if(buf[0] == '6') goto a6;
if(buf[0] == 'E') goto E;
goto a00;
a2:
/*Velocities*/
fputs("\nr/rs = ",stdout);
fputs(gcvt(r,12,buf),stdout);
fputs(" r/rs = ",stdout); gets(buf);if(buf[0]!='')r=atof(buf);
fputs("\nr/rs = ",stdprn);
fputs(buf,stdprn);
fputs("\nE.C. velocity V = ",stdout);fputs(gcvt(V,10,buf),stdout);
fputs(" E.C. velocity V = ",stdprn);fputs(buf,stdprn);
fputs(" G.P. velocity Ve = ",stdout);fputs(gcvt(Ve,10,buf),stdout);
fputs(" G.P. velocity Ve = ",stdprn);fputs(buf,stdprn);fputs("\n",stdprn);
fputs("\n",stdout);
fputs("\nE.C. velocity from T=1/2K Rg V2 = ",stdout);fputs(gcvt(V2,10,buf),std
out);
fputs(" E.C. velocity from T=1/2K Rg V2 = ",stdprn);fputs(buf,stdprn);
fputs("\n",stdout); fputs("\n",stdprn);
goto a00;
a3:
fputs("EMPTY\n", stdout);
goto a00;
a4:
/*Gravitational Energy Integrals*/
fputs("\nr/rs = ",stdout);
fputs(gcvt(r,12,buf),stdout);
fputs(" r/rs = ",stdout); gets(buf);if(buf[0]!='')r=atof(buf);
fputs("\nr/rs = ",stdprn);
fputs(buf,stdprn);
fputs(" En/M = ", stdout);fputs(" En/M = ", stdprn);
fputs(gcvt(EnM,12,buf),stdout);fputs(buf,stdprn);
fputs("\n(Covariant) Mg/M = 2 (1/1+mrs2 + ln(1+mrs2) - 0.5 - ln 2) \n",stdout);
fputs("Mg/M = ", stdout);fputs(" Mg/M = ", stdprn);
fputs(gcvt(MgM,12,buf),stdout);fputs(buf,stdprn);
fputs("\n", stdout);fputs("\n", stdprn);
fputs("(Inv) Emg/M = - (1 - mrs2)/(1 + mrs2)\n",stdout);
fputs("Emg/M = ", stdout);fputs("Emg/M = ", stdprn);
fputs(gcvt(EmgM,12,buf),stdout);fputs(buf,stdprn);
fputs("\nConEg/M = 2(ln(2 mrs2/(1+mrs2)) + 1/(1+mrs2) - 1/2)\n",stdout);
fputs("ConEg/M = ", stdout);fputs(" ConEg/M = ", stdprn);
fputs(gcvt(EgM,12,buf),stdout);fputs(buf,stdprn);
fputs("\n", stdout);fputs("\n", stdprn);
goto a00;
a5:
fputs("Scalar Energy of the Dust for Unite Rest Mass at Infinite P/dm", stdout)
;
fputs("\n", stdout);
fputs("\nr/rs = ",stdout);
fputs(gcvt(r,12,buf),stdout);
fputs(" r/rs = ",stdout); gets(buf);if(buf[0]!='')r=atof(buf);
fputs("\nr/rs = ",stdprn);
fputs(buf,stdprn);
fputs(" P/dm = ", stdout);fputs(" P/dm = ", stdprn);
fputs(gcvt(P,12,buf),stdout);fputs(buf,stdprn);
fputs("\n", stdout);fputs("\n", stdprn);
goto a00;
a6:
fputs("EMPTY", stdout);
fputs("\n", stdout);
goto a00;
E:
Document Title<title> Tag. | כותרת המסמך המותאמת אישית מגדירה את כותרת הדף כפי שהוא נראה בדפדפנים ומנועי חיפוש.תווים בשימוש:-0 |
---|---|
תיאור מטא<meta name="description" />. | Text entered in the Meta Description field is used as the short page description under the title on search engine results pages.תווים בשימוש:-0 |
מילות מפתח מטא<meta name="keywords" />. | A comma-separated list of keywords relevant to the page can be entered in the Meta Keywords field. Keywords are generally ignored by Search Engines. |
Canonical URL<link rel="canonical" />. | |
URI להפנייה מותאם אישית301 Redirect. | |
הגדרות Robots Meta [?] | החל noindex על פוסט/ עמוד זההחל nofollow על פוסט/ עמוד זההחל noarchive על פוסט/ עמוד זה |
סקריפטים
פתיחת/סגירת תפריט: סקריפטים
Header Scripts | Output before the closing head tag, after sitewide header scripts. |
---|---|
Body Scripts | |
Body Scripts Position | Bottom: before closing body tag Top: after opening body tag |
- פוסט
- בלוק
Preformatted
Add text that respects your spacing and tabs, and also allows styling.
טיפוגרפיה
גודל גופןגודל גופןברירת מחדלמותאם אישיתpxemremאיפוס
צבע
אפשרויות נוספות
דילוג לבלוק הנבחרפתח פאנל פרסום
- מסמך
- Preformatted