COMMENT This file has been written by: Josep Manel Parra Departament de F¡sica Fonamental, Facultat de F¡sica Universitat de Barcelona, Diagonal 647 E-08028 Barcelona, SPAIN e-mail: jmparra@ffn.ub.es beta-version: February 1997 for REDUCE 3.3 This is a package of functions in REDUCE that allow an easy manipulation of the full set of Lorentz transformations in the Minkowski space-time of metrics - + + + We shall now introduce basics for the Clifford Geometric Algebra for the Minkowski space-time of signature +2, that is the one with u(0) as time-like vector, `square root' of -1.; %%%%%% GEOMETRIC PRODUCT %%%%%%%%%%% operator signature$ signature(0):=-1$ signature(1):=1$ signature(2):=1$ signature(3):=1$ operator u$ noncom u$ for all j let u(j)*u(j)=signature(j)$ for all j,k such that j>k let u(j)*u(k)=-u(k)*u(j)$ factor u$ operator comm$ for all x,y let comm(x,y)=x*y-y*x$ operator acomm$ for all x,y let acomm(x,y)=x*y+y*x$ operator comm2$ for all x,y let comm2(x,y)=(x*y-y*x)/2$ operator acomm2$ for all x,y let acomm2(x,y)=(x*y+y*x)/2$ %%%%%%%%% CONJUGATIONS FROM BRACKX AND DELANGHE %%%%%%%%%%% operator usergrad; for all j,k let usergrad(j)*usergrad(k)=usergrad(j+k); for all j let usergrad(j)^2=usergrad(2*j); procedure gradsplit ex; begin scalar y; y:=ex*usergrad(0); for j:=0:3 do y:=sub(u(j)=usergrad(1)*u(j),y); return y end; %%%%%%%%%% grade %%%%%%%%%%%%%% procedure grade(ex,k); df(gradsplit ex,usergrad(k)); %%%%%%%%%% reversion %%%%%%%%%%%%%% procedure rev ex; begin scalar y; y:=gradsplit ex; y:=sub(usergrad(0)=1,usergrad(1)=1,usergrad(2)=-1,usergrad(3)=-1, usergrad(4)=1,y); return y end; %%%%%%%%% conjugation %%%%%%%%%%%%% procedure bar ex; begin scalar y; y:=gradsplit ex; y:=sub(usergrad(0)=1,usergrad(1)=-1,usergrad(2)=-1,usergrad(3)=1, usergrad(4)=1,y); return y end; %%%%%%%%% main involution %%%%%%%%%%%%% procedure mainvol ex; begin scalar y; y:=gradsplit ex; y:=sub(usergrad(0)=1,usergrad(1)=-1,usergrad(2)=1,usergrad(3)=-1, usergrad(4)=1,y); return y end; %%%%%%%%% NABLA OPERATOR IN ORTHOGONAL COORDS %%%%%%%%% array CO(4); array LAME(4)$ % GENERIC 4-DIMENSIONAL SYSTEM % CO(0):=X0; % CO(1):=X1; % CO(2):=X2; % CO(3):=X3; % DEPEND H0, X0,X1,X2,X3$ % DEPEND H1, X0,X1,X2,X3$ % DEPEND H2, X0,X1,X2,X3$ % DEPEND H3, X0,X1,X2,X3$ % LAME(1):=H1$ % LAME(2):=H2$ % LAME(3):=H3$ % LAME(0):=H4$ % GENERIC 3-DIMENSIONAL SYSTEM (NON-RELATIVISTIC CASE) % CO(0):=X0; % CO(1):=X1; % CO(2):=X2; % CO(3):=X3; % DEPEND H1,X1,X2,X3$ % DEPEND H2,X1,X2,X3$ % DEPEND H3,X1,X2,X3$ % LAME(1):=H1$ % LAME(2):=H2$ % LAME(3):=H3$ % LAME(0):=1$ % Cartesian system (default) CO(0):=X0; CO(1):=X1; CO(2):=X2; CO(3):=X3; LAME(1):=1$ LAME(2):=1$ LAME(3):=1$ LAME(0):=1$ % Spherical system (alternative activation supressing %) % CO(0):=X0; % CO(1):=R; % CO(2):=TH; % CO(3):=PH; % LAME(1):=1$ % LAME(2):=R$ % LAME(3):=R*sin(TH)$ % LAME(0):=1$ % Cylindrical system % CO(0):=X0; % CO(1):=RHO; % CO(2):=TH; % CO(3):=Z; % LAME(1):=1$ % LAME(2):=RHO$ % LAME(3):=1$ % LAME(0):=1$ % Cylindrical-parabolic system x=(R*R-S*S)/2 y=R*S z=z % CO(0):=X0; % CO(1):=R; % CO(2):=S; % CO(3):=Z; % LAME(1):=sqrt(R*R+S*S)$ % LAME(2):=sqrt(R*R+S*S)$ % LAME(3):=1$ % LAME(0):=1$ %%% Definition of the Ricci Rotation Coeffs. COVDER,NABLA,LAPLACE%%%%% % According to the most accepted use we have for the covariant % derivative of basis vectors D_ei (ej)= RRC(_j _i ^k) ek ARRAY RRC(4,4,4)$ FOR X:=0:3 DO FOR Y:=0:3 DO FOR Z:=0:3 DO RRC(X,Y,Z):=0$ FOR X:=0:3 DO FOR Y:=0:3 DO IF X NEQ Y THEN RRC(X,X,Y):= -SIGNATURE(X)*SIGNATURE(Y)*DF(LAME(X),CO(Y))/(LAME(X)*LAME(Y))$ FOR X:=0:3 DO FOR Y:=0:3 DO IF X NEQ Y THEN RRC(Y,X,X):= DF(LAME(X),CO(Y))/(LAME(X)*LAME(Y))$ FOR ALL X LET DF(u(X),CO(0))=FOR K:=0:3 SUM LAME(0)*RRC(X,0,K)*u(K)$ FOR ALL X LET DF(u(X),CO(1))=FOR K:=0:3 SUM LAME(1)*RRC(X,1,K)*u(K)$ FOR ALL X LET DF(u(X),CO(2))=FOR K:=0:3 SUM LAME(2)*RRC(X,2,K)*u(K)$ FOR ALL X LET DF(u(X),CO(3))=FOR K:=0:3 SUM LAME(3)*RRC(X,3,K)*u(K)$ OPERATOR COVDER$ FOR ALL X,Y LET COVDER(X,Y)=FOR J:=0:3 SUM DF(Y,U(J))*DF(X,CO(J))/LAME(J)$ OPERATOR NABLA$ FOR ALL X LET NABLA(X)=FOR J:=0:3 SUM SIGNATURE(J)*u(J)*DF(X,CO(J))/LAME(J)$ OPERATOR LAPLACE$ FOR ALL X LET LAPLACE(X)=NABLA(NABLA(X))$ %%%%%%%% HELPFUL TOOLS FOR DEFINING SYMBOLIC ELEMENTS %%%% procedure mkidn(a,l); begin scalar u,m; u:=a; m:=l; while m neq {} do << u:=mkid(u,first m); m:=rest m >>; return u end; procedure vect(a); for j:=0:3 sum mkid(a,j)*u(j); procedure bivect(a); for j:=0:3 sum for k:=(j+1):3 sum mkidn(a,{j,k})*u(j)*u(k); procedure trivect(a); for i:=0:4 sum for j:=(i+1):3 sum for k:=(j+1):3 sum mkidn(a,{i,j,k})*u(i)*u(j)*u(k); procedure pseudo(a); mkidn(a,{0,1,2,3})*psc13; psc13:=u(0)*u(1)*u(2)*u(3); procedure cliffor(a); mkid(a,sc)+vect(a)+bivect(a)+trivect(a)+pseudo(a); procedure clifforp(a); mkid(a,sc)+bivect(a)+pseudo(a); procedure clifform(a); vect(a)+trivect(a); %%%%%%% GENERIC SET OF FIELDS IN ARBITRARY COORDINATES %%%% depend s0, CO(0),CO(1),CO(2),CO(3)$ depend a0, CO(0),CO(1),CO(2),CO(3)$ depend a1, CO(0),CO(1),CO(2),CO(3)$ depend a2, CO(0),CO(1),CO(2),CO(3)$ depend a3, CO(0),CO(1),CO(2),CO(3)$ depend ef1, CO(0),CO(1),CO(2),CO(3)$ depend ef2, CO(0),CO(1),CO(2),CO(3)$ depend ef3, CO(0),CO(1),CO(2),CO(3)$ depend mf1, CO(0),CO(1),CO(2),CO(3)$ depend mf2, CO(0),CO(1),CO(2),CO(3)$ depend mf3, CO(0),CO(1),CO(2),CO(3)$ depend t0, CO(0),CO(1),CO(2),CO(3)$ depend t1, CO(0),CO(1),CO(2),CO(3)$ depend t2, CO(0),CO(1),CO(2),CO(3)$ depend t3, CO(0),CO(1),CO(2),CO(3)$ depend s4, CO(0),CO(1),CO(2),CO(3)$ f1:=a0*u(0)+a1*u(1) + a2*u(2) + a3*u(3)$ f2:= ef1*u(0)*u(1)+ef2*u(0)*u(2)+ ef3*u(0)*u(3)+ mf1*u(2)*u(3)+mf2*u(3)*u(1)+ mf3*u(1)*u(2)$ f3:= t1*u(0)*u(2)*u(3)+t2*u(0)*u(3)*u(1)+ t3*u(0)*u(1)*u(2)+ t0*u(1)*u(2)*u(3)$ f4:= s4*u(0)*u(1)*u(2)*u(3)$ f5:=s0+f1+f2+f3+f4$ matf1:=mat((a0),(a1),(a2),(a3)); matf2:=mat((ef1),(ef2),(ef3),(mf1),(mf2),(mf3)); matf3:=mat((t0),(t1),(t2),(t3)); %%%%%%%%%%%% NUMERICAL AND LORENTZ GROUP SECTION %%%%%%%%%%%%%%%%%%%% COMMENT The angles will be expressed in radians and velocities in the light units (v(light) = 1) unless otherwise stated. We provide the constants dg and kps for easy conversion #rad = #degrees*dg (dg = constant of angular conversion, deg is a reserved name in REDUCE) In a similar way #velocity(c) = #velocity(km/s)*kps ( kps the constant for velocity conversion.) Both conversions will allow standard input instead of the `natural' or `mathematical' ones. Also a small quantity "epsilon" is introduced in order to avoid unwanted divisions by zero.; ON BIGFLOAT; ON NUMVAL; PRECISION 12; OFF FACTOR; epsilon := 10^(-16); dg:= Pi/180; kps := 1/299792.458; factor i; % All that stuff seems necesary or convenient for the numerical evaluation % of Lorentz transformations for all x,y let cos(x)*cos(y)=(cos(x+y)+cos(x-y))/2; for all x,y let cos(x)*sin(y)=(sin(x+y)-sin(x-y))/2; for all x,y let sin(x)*sin(y)=(cos(x-y)-cos(x+y))/2; for all x,y let cos(x)^2=(1+cos(2*x))/2; for all x,y let sin(x)^2=(1-cos(2*x))/2; % for all x let tanh(x)=(e^x-e^(-x))/(e^x+e^(-x)); for all x let tanh(x)=sinh(x)/cosh(x); for all x let cosh(atanh(x))=1/sqrt(1-x^2); for all x let sinh(atanh(x))=x/sqrt(1-x^2); for all x let tanh(acosh(x))=sqrt(x^2-1)/x; for all x,y let cosh(x)*cosh(y)=(cosh(x+y)+cosh(x-y))/2; for all x,y let cosh(x)*sinh(y)=(sinh(x+y)+sinh(-x+y))/2; for all x,y let sinh(x)*sinh(y)=(cosh(x+y)-cosh(x-y))/2; for all x,y let cosh(x)^2=(1+cosh(2*x))/2; for all x,y let sinh(x)^2=(cosh(2*x)-1)/2; for all y,x such that y>0 and x>0 let atan2(y,x)=atan(y/x); for all y,x such that y<0 and x<0 let atan2(y,x)=atan(y/x)+Pi; for all y,x such that y<0 and x>0 let atan2(y,x)=atan(y/x)+2*Pi; for all y,x such that y>0 and x<0 let atan2(y,x)=atan(y/x)+Pi; for all x such that x>0 let atan2(0,x)=0; for all x such that x<0 let atan2(0,x)=Pi; for all x such that x>0 let atan2(x,0)=Pi/2; for all x such that x<0 let atan2(x,0)=3*Pi/2; for all y let exp(i*y)=cos(y)+i*sin(y); for all y let e^(i*y)=cos(y)+i*sin(y); for all x let cos(x*I)=cosh(x); for all x let sin(x*I)=I*sinh(x); for all x,y let cos(x+I*y)=cos(x)*cos(I*y)-sin(x)*sin(I*y); for all x,y let sin(x+I*y)=sin(x)*cos(I*y)+cos(x)*sin(I*y); for all x let cosh(x*I)=cos(x); for all x let sinh(x*I)=I*sin(x); for all x,y let cosh(x+I*y)=cosh(x)*cosh(I*y)+sinh(x)*sinh(I*y); for all x,y let sinh(x+I*y)=sinh(x)*cosh(I*y)+cosh(x)*sinh(I*y); for all x,y,z let divi(x,y+I*z)=x*(y-I*z)/(y^2+z^2); for all x,y,z let divi(x,y-I*z)=x*(y+I*z)/(y^2+z^2); for all x,y let sqrt(x+I*y)=sqrt(sqrt(x^2+y^2))*exp(I*atan2(y,x)/2); for all x,y let sqrt(x-I*y)=sqrt(sqrt(x^2+y^2))*exp(I*atan2(-y,x)/2); for all x let atanh(tanh(x))= x; for all x let atanh(x)=log((1+x)/(1-x))/2; for all x let acosh(x)=log(x+sqrt(x^2-1)); for all x let asinh(x)=log(x+sqrt(x^2+1)); % fundamental function that allows the pass from the six normal coordinates % to the eight Cayley-Klein parameters procedure bivexp(x); begin scalar y,z,k1,k2,k; y:=x*x; k1:=grade(y,0); k2:=df(y,u(0),u(1),u(2),u(3)); k:=sqrt(k1+I*k2); z:=cosh(k)+divi(sinh(k),k)*x; return sub(I=u(0)*u(1)*u(2)*u(3),z) end; COMMENT The NORMAL parameter for velocity transformations that behaves as an additive parameter when compounding successive transformations along the same direction (exactly the same that happens with the angle if we keep the same rotation axis) is `rapidity'. (This is the term used by L‚vy-Leblond in "Speed(s)" Amer. J. Phys. 48(5) (1980), 345 and in "Additivity, rapidity, relativity" Amer. J. Phys. 47(12) (1979), 1045.) COMMENT Now we shall introduce the multivector components of degrees 1,2,3 by means of functions that will save some typing and also keep the input in a physically significant ordering (not just alphabetical) Obviously, the use of this functions is a matter of taste and convenience in any particular instance. Here fv means the "four vector" or time-space (Minkowski's) vector; FOR ALL q,x,y,z LET fv(q,x,y,z) = q*u(0) + x*u(1) + y*u(2) + z*u(3); COMMENT Introduction of bivectors will be done in two steps, splitting the six components of the general bivector in two groups of three, splitting the bivector into the time-space and space-space part. Because the physical magnitude of this type most used in physics is the electromagnetic field, the functions will be called after it: ef := "electric field" and mf := "magnetic field" ; FOR ALL x,y,z LET ef(x,y,z) = x*u(0)*u(1) + y*u(0)*u(2) + z*u(0)*u(3); FOR ALL x,y,z LET mf(x,y,z) = x*u(2)*u(3) + y*u(3)*u(1) + z*u(1)*u(2); FOR ALL x,y,z,a,b,c LET emf(x,y,z,a,b,c) = x*u(0)*u(1) + y*u(0)*u(2) + z*u(0)*u(3)+ a*u(2)*u(3) + b*u(3)*u(1) + c*u(1)*u(2); COMMENT tv := "Three-order multivector or dual vector" in the same physical ordering as the one used for first-order four vectors (time, space). Now the time component corresponds to the ordinary space-volume (the pseudoscalar of the space algebra) while the space components correspond to "hypervolumes" resulting from the product of a space area with time. ; FOR ALL p,x,y,z LET tv(p,x,y,z) = p*u(1)*u(2)*u(3) + x*u(0)*u(2)*u(3) + y*u(0)*u(3)*u(1) + z*u(0)*u(1)*u(2); COMMENT Now we shall pass to the construction of the unit bivectors that correspond to the axis of rotation and the direction of the pure velocity transformations. The letter "n" will be used for the first (rotation axis) and the letter "u" for the second (velocity axis). For the moment the "direction" will be indicated by the two polar angles (colatitude, longitude) used in the spherical coordinate system, for which we have and should develop good intuition. Remember that angles are in radians unless multiplied by the constant dg in the input. The functions will be called: np(..,..) := "rotation axis := space-space bivector" up(..,..) := "boost axis := time-space bivector" It is necessary to realize that REDUCE will always order the Clifford products of the basis vectors following the `alphabetical' ordering {0,1,2,3}, but that we are free to introduce it in the ordering that we consider the most convenient to our thinking. In relativity this corresponds to the space-time splitting effected by the u(0) vector, that allows to express any geometrical quantity in terms of scalar magnitudes and three-component vectors, with invariant or intrinsic meaning under space rotation group that does not affect y(0). ; FOR ALL x,y LET np(x,y) = SIN(x)*COS(y)*u(2)*u(3) + SIN(x)*SIN(y)*u(3)*u(1) + COS(x)*u(1)*u(2); FOR ALL x,y LET up(x,y) = SIN(x)*COS(y)*u(0)*u(1) + SIN(x)*SIN(y)*u(0)*u(2) + COS(x)*u(0)*u(3); COMMENT We build now the general rotation operator in function of the three arguments (Theta,Phi,Angle), all in degrees. For pure velocity or "boost" transformations the functions will be bp(Theta,Phi,v/c); FOR ALL x,y,z LET rp(x,y,z) = COS(z/2) - SIN(z/2)*np(x,y); FOR ALL x,y,v LET bp(x,y,v) = COSH(ATANH(v)/2) + SINH(ATANH(v)/2)*up(x,y); COMMENT Now we repeat the above constructions with `direction' expressed in terms of a non-normalized set of cartesian coordinates. In the first place we define the axes "nc" and "uc" ; FOR ALL x,y,z LET nc(x,y,z) = (x*u(2)*u(3) + y*u(3)*u(1) + z*u(1)*u(2))/ Sqrt(x*x+y*y+z*z); FOR ALL x,y,z LET uc(x,y,z) = (x*u(0)*u(1) + y*u(0)*u(2) + z*u(0)*u(3))/ Sqrt(x*x+y*y+z*z); COMMENT The corresponding Lorentz transformations are called rc(x,y,z,Angle), bc(x,y,z,v/c); FOR ALL x,y,z,p LET rc(x,y,z,p) = COS(p/2) - SIN(p/2)*nc(x,y,z); FOR ALL x,y,z,p LET bc(x,y,z,p) = COSH(ATANH(p)/2) + SINH(ATANH(p)/2)*uc(x,y,z); COMMENT The standard real 4x4-matrix formulation of a Lorentz transformation is obtained precisely through its very definition. Each column r corresponds to the components of the image of the r-th. basis vectors. We recall that the standard order in physics is {0,1,2,3}. These four columns are defined by means of; FOR ALL x LET col0(x) = x*u(0)*rev(x); FOR ALL x LET col1(x) = x*u(1)*rev(x); FOR ALL x LET col2(x) = x*u(2)*rev(x); FOR ALL x LET col3(x) = x*u(3)*rev(x); procedure Lorentzmat(x); mat((df(col0(x),u(0)),df(col1(x),u(0)), df(col2(x),u(0)),df(col3(x),u(0))), (df(col0(x),u(1)),df(col1(x),u(1)), df(col2(x),u(1)),df(col3(x),u(1))), (df(col0(x),u(2)),df(col1(x),u(2)), df(col2(x),u(2)),df(col3(x),u(2))), (df(col0(x),u(3)),df(col1(x),u(3)), df(col2(x),u(3)),df(col3(x),u(3)))); COMMENT In a complete analogous way may be constructed the 6x6 real matrix, the 2-compound matrix of the standard one, and that can be used to transform electromagnetic fields exactly in the same way that vectors are transformed in the 4x4 representation. This physical example is of capital importance, due the strong relationship between the special relativity and the electromagnetism. Changing the system of observation by means of a Lorentz transformation, the electric and magnetic fields transform between themselves and become `entangled' in a way very different of the entangling between the space and time components of a vector.; FOR ALL x LET col01(x) = x*u(0)*u(1)*rev(x); FOR ALL x LET col02(x) = x*u(0)*u(2)*rev(x); FOR ALL x LET col03(x) = x*u(0)*u(3)*rev(x); FOR ALL x LET col23(x) = x*u(2)*u(3)*rev(x); FOR ALL x LET col31(x) = x*u(3)*u(1)*rev(x); FOR ALL x LET col12(x) = x*u(1)*u(2)*rev(x); Procedure Lorentzmat2(x); mat((df(col01(x),u(0),u(1)),df(col02(x),u(0),u(1)), df(col03(x),u(0),u(1)),df(col23(x),u(0),u(1)), df(col31(x),u(0),u(1)),df(col12(x),u(0),u(1))), (df(col01(x),u(0),u(2)),df(col02(x),u(0),u(2)), df(col03(x),u(0),u(2)),df(col23(x),u(0),u(2)), df(col31(x),u(0),u(2)),df(col12(x),u(0),u(2))), (df(col01(x),u(0),u(3)),df(col02(x),u(0),u(3)), df(col03(x),u(0),u(3)),df(col23(x),u(0),u(3)), df(col31(x),u(0),u(3)),df(col12(x),u(0),u(3))), (df(col01(x),u(2),u(3)),df(col02(x),u(2),u(3)), df(col03(x),u(2),u(3)),df(col23(x),u(2),u(3)), df(col31(x),u(2),u(3)),df(col12(x),u(2),u(3))), (-df(col01(x),u(3),u(1)),-df(col02(x),u(3),u(1)), -df(col03(x),u(3),u(1)),-df(col23(x),u(3),u(1)), -df(col31(x),u(3),u(1)),-df(col12(x),u(3),u(1))), (df(col01(x),u(1),u(2)),df(col02(x),u(1),u(2)), df(col03(x),u(1),u(2)),df(col23(x),u(1),u(2)), df(col31(x),u(1),u(2)),df(col12(x),u(1),u(2)))); COMMENT There is no point in constructing the 3-compound matrix by which the components of the third order multivector change in a change of reference. It coincides exactly with the 4x4-matrix of the vector representation. We remember here that given an arbitrary transformation X and an arbitrary geometric element Y (that can be a linear combination of multivectors of different order), as it is the case for the electromagnetic four potential, the image of Y is obtained accordingly the universal transformation law X --> X Y/X so simple that it makes unnecessary the definition of a new two-argument function. Till now we have constructed and applied Lorentz transformations taking as our starting point the "primitive description" in terms of rotations and pure velocity transformations or "boosts" But, compounding two or more of such transformations, that is, multiplying them as elements of the Clifford algebra, we get a general transformation that in general cannot be intuitively interpreted in the previous form. It is thus necessary (or convenient) to decompose it into a product of a boost and a rotation. The order of the two factors is now relevant: Although the rotation operator is the same in both decompositions, the "boost" is, in most cases, different. Now, using the expressions given in J.M. Parra, "Algebres de Clifford i transformacions de Lorentz Una introducci¢", Treballs de F¡sica 2(3) p.14 we define first the projectors that give the space-part of the four-vector part and the time-space and space-space parts of the bivector part of the general element, as these cases are not covered by the grade operator; FOR ALL x LET vpart(x) = sub(u(0)=0,grade(x,1)); FOR ALL x LET mfpart(x) = sub(u(0)=0,grade(x,2)); FOR ALL x LET efpart(x) = grade(x,2)-mfpart(x); COMMENT Now the scalar parameter that determines by itself the magnitude of the velocity transformation.; FOR ALL x LET k(x) = 1/Sqrt(grade(x,0)^2-mfpart(x)^2); COMMENT Finally the two "boost" that factorize the general transformation X. "bleft(x)" will correspond to the left factor in the decomposition X := bleft * rotation; FOR ALL x LET bleft(x)=1/k(x)+k(x)*(grade(x,0)*efpart(x)- grade(x,4)*mfpart(x)+grade(mfpart(x)*efpart(x),2)); COMMENT "bright(x)" corresponds to the right factor of the decomposition X := rotation * bright; FOR ALL x LET bright(x)=1/k(x)+k(x)*(grade(x,0)*efpart(x)- grade(x,4)*mfpart(x)-grade(mfpart(x)*efpart(x),2)); COMMENT As is evident from the formulas above, the two "boosts" possess the same absolute value of "rapidity" and hence of velocity. We define the three functions: "rapidity(X)" that will give it from zero to infinity, "veloc(X)" (in natural units) and "velok(X)" (in km/s); FOR ALL x LET rapidity(x) = 2 COSH(1/k(x)); FOR ALL x LET veloc(x) = TANH(rapidity(x)); FOR ALL x LET velok(x) = 299792*veloc(x); COMMENT The velocity "vector" that characterizes by itself the "boost", both in magnitude and direction is expressed as it should in natural units (velocity of light := 1); FOR ALL x LET vvec(x) = veloc(x)*efpart(x)/Sqrt(efpart(x)*efpart(x)); COMMENT It is often convenient to look at it as given by the expression SINH(rapidity)*u. Also it seems interesting to give in polar coordinates the velocity vector of the boost in such a manner that a "boost" can be conceived and viewed as a point in the unit ball of a three-dimensional space, corresponding the surface to the transformations at light velocity. To this end we introduce the functions; FOR ALL x LET thetab(x) = ATAN2(Sqrt(grade(x*u(0)*u(1),0)^2+ grade(x*u(0)*u(2),0)^2),grade(x*u(0)*u(3),0)^2+epsilon); FOR ALL x LET phib(x) = ATAN2(grade(x*u(2)*u(0),0), grade(x*u(1)*u(0),0)+epsilon); FOR ALL x LET bpol(x) = veloc(x)*u(4) + thetab(x)/dg*u(5) + phib(x)/dg*u(6); FOR ALL x LET bcar(x) = vvec(x); COMMENT We have used the "supernumerary vectors" u(4), u(5), u(6) just to give the three spherical coordinates of the point representing the boost. The angles are now given in degrees, which makes easier the mental representation. The rotation factor, the same in both decompositions, is; FOR ALL x LET rotpart(x) = k(x)*grade(x,0) + k(x)*mfpart(x); COMMENT Now, to complete this description, it is convenient to define the functions that give for a general rotation "r" the values of the axis and the angle of rotation. They are "axis(r)" and "angle(r)" in radians or "degrees(r)" in degrees.; FOR ALL r LET axis(r) = u(1)*u(2)*u(3)*mfpart(r)/Sqrt(-mfpart(r)*mfpart(r)); FOR ALL r LET angle(r) = 2*ACOS(grade(r,0)); FOR ALL r LET degrees(r) = 360*ACOS(grade(r,0))/PI; COMMENT And, as it has been done with the boost, also the rotation can be mapped into a unit ball of the three dimensional space; FOR ALL x LET thetar(x) = ATAN2(Sqrt(grade(axis(x)*u(1),0)^2+ grade(axis(x)*u(2),0)^2), grade(axis(x)*u(3),0)); FOR ALL x LET phir(x) = ATAN2(grade(axis(x)*u(2),0), grade(axis(x)*u(1),0)); FOR ALL x LET rpol(x) = angle(x)/(2*PI)* u(7) + thetar(x)/dg* u(8) + phir(x)/dg* u(9); FOR ALL x LET rpold(x) = degrees(x)* u(9) + thetar(x)/dg* u(7) + phir(x)/dg* u(8); FOR ALL x LET rcar(x) = angle(x) * axis(x) / (2*PI); COMMENT Combining the polar expressions for the boost and rotation parts we can obtain a nice visualization of the Lorentz group composition law as a product defined on an ordered pair of unit balls. The ordering of these balls is relevant affecting the orientation of the result on the "boost" sphere. Much like it occurs with the complex numbers, the product is an inner product in the rotation's sphere, but the product of two non-commuting factors in the boost sphere give a non-null result in the rotation's sphere. Of course, the product law is much more involved. Also the Wigner rotation is easily visualized in this scheme. Warning: Using these "composition law of unit spheres" the radial coordinate of the "rotation factor" should be reduced to the unit ball (angle/360).; FOR ALL x LET leftpol(x) = bpol(bleft(x))+ rpol(rotpart(x)); FOR ALL x LET rightpol(x) = bpol(bright(x))+ rpol(rotpart(x)); FOR ALL x LET leftcar(x) = vvec(bleft(x)) + rcar(rotpart(x)); FOR ALL x LET rightcar(x) = vvec(bright(x)) + rcar(rotpart(x)); COMMENT As a general warning we notice that some of the defined functions have been conceived to apply only to a very specific kind of geometric elements. Applied to elements outside its intended domain of application may lead to nonsensical results. For instance, it would be meaningless to apply the angle() function to a general Lorentz transformation. Finally we include here the definition of the rotation operators that correspond to a series of three Euler angles. We do that for the three most used conventions in physics; FOR ALL a,b,c LET rzxz(a,b,c)=(COS(a/2)-SIN(a/2)*u(1)*u(2))* (COS(b/2)-SIN(b/2)*u(2)*u(3))*(COS(c/2)-SIN(c/2)*u(1)*u(2)); COMMENT that is used extensively in classical mechanics and planetary astronomy (it fits rather well the needs in the description of the planetary orbits around the Sun in a plane close to the ecliptic). And; FOR ALL a,b,c LET rzyz(a,b,c)=(COS(a/2)-SIN(a/2)*u(1)*u(2))* (COS(b/2)-SIN(b/2)*u(3)*u(1))*(COS(c/2)-SIN(c/2)*u(1)*u(2)); COMMENT that is the convention most often used in quantum mechanics, and that differs from the previous one only in the selection of the axis of the second rotation; FOR ALL a,b,c LET rzyx(a,b,c)=(COS(a/2)-SIN(a/2)*u(1)*u(2))* (COS(b/2)-SIN(b/2)*u(3)*u(1))*(COS(c/2)-SIN(c/2)*u(2)*u(3)); COMMENT Goldstein's Classical Mechanics, Appendix B, quotes this as the most used convention by US and British aerodynamicists a=yaw angle (z body), b=pitch angle (y body), c=bank or roll angle (x body). They are applied in succession a,b,c. In the fixed (space) axes convention they should be applied in reversed order. We have done that with the left factor. This facilitates (by two compensations of the ordering) the mnemotecnic rule because it is usually called the 321 sequence; for all x,y let exp(x+i*y)=exp(x)*(cos(y)+i*sin(y)); for all x,y let e^(x+i*y)=exp(x)*(cos(y)+i*sin(y)); end;