Results of octonion test.
 
(C) Copyright Hubert Holin 2003-2005.
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
 
Running 7 test cases...
Testing multiplication for float.
Testing multiplication for double.
Testing multiplication for long double.
Testing exp for float.
Testing exp for double.
Testing exp for long double.
Please input an octonion...
You have entered the octonion (1,2,3,4,5,6,7,8) .
For this octonion:
the value of the real part is 1
the value of the unreal part is (0,2,3,4,5,6,7,8)
the value of the sup norm is 8
the value of the l1 norm is 36
the value of the magnitude (euclidian norm) is 14.2829
the value of the (Cayley) norm is 204
the value of the conjugate is (1,-2,-3,-4,-5,-6,-7,-8)
the value of the exponential is (-0.300136,0.379239,0.568858,0.758478,0.948097,1.13772,1.32734,1.51696)
the value of the cube is (-608,-400,-600,-800,-1000,-1200,-1400,-1600)
the value of the cosinus is (416246,-90998.6,-136498,-181997,-227497,-272996,-318495,-363995)
the value of the sinus is (648266,58429.6,87644.3,116859,146074,175289,204503,233718)
the value of the tangent is (3.28749e-08,0.140372,0.210559,0.280745,0.350931,0.421118,0.491304,0.56149)
the value of the hyperbolic cosinus is (-0.170378,0.163957,0.245936,0.327915,0.819786,0.983744,1.1477,1.31166)
the value of the hyperbolic sinus is (-0.129759,0.215282,0.322922,0.430563,1.07641,1.29169,1.50697,1.72225)
the value of the hyperbolic tangent is (1.30977,-0.00314284,-0.00471435,-0.00628569,-0.0157142,-0.0188571,-0.022,-0.0251428)
the value of the Sinus Cardinal (of index pi) is (32249.3,-6069.12,-9103.69,-12138.2,-15172.8,-18207.4,-21241.9,-24276.5)
the value of the Hyperbolic Sinus Cardinal (of index pi) is (0.198288,0.00232745,0.00349117,0.0046549,-0.0258405,0.0175354,0.0155332,0.0261946)
 
The value of the octonion represented in spherical form by rho = 64 , theta = 0.785398 , phi1 = 0.785398 , phi2 = 0.785398 , phi3 = 0.785398 , phi4 = 0.785398 , phi5 = 0.785398 , phi6 = 0.785398 is (5.65685,5.65685,8,11.3137,16,22.6274,32,45.2548)
The value of the octonion represented in multipolar form by rho1 = 1 , theta1 = 0 , rho2 = 2 , theta2 = 1.5708rho3 = 1.41421 , theta3 = 0.785398 , rho4 = 2.82843 , theta4 = 1.0472 is (1,0,-8.74228e-08,2,1,1,1.41421,2.44949)
The value of the octonion represented in cylindrical form by r = 1.41421 , angle = 0.785398 , h1 = 3 , h2 = 4 , h3 = 5 , h4 = 6 , h5 = 7 , h6 = 8 is (1,1,3,4,5,6,7,8)
 
Real 1: 1 ; Complex 1: (1,0) ; Quaternion 1: (1,0,0,0) ; Octonion 1: (1,0,0,0,0,0,0,0) .
Complex i: (0,1) ; Quaternion i: (0,1,0,0) ; Octonion i : (0,1,0,0,0,0,0,0) .
Quaternion j: (0,0,1,0) ; Octonion j: (0,0,1,0,0,0,0,0) .
Quaternion k: (0,0,0,1) ; Octonion k: (0,0,0,1,0,0,0,0) .
Quaternion e': (0,0,0,0,1,0,0,0) .
Quaternion i': (0,0,0,0,0,1,0,0) .
Quaternion j': (0,0,0,0,0,0,1,0) .
Quaternion k': (0,0,0,0,0,0,0,1) .
 
(1,0,0,0,0,0,0,0) ; (0,1,0,0,0,0,0,0) ; (0,0,1,0,0,0,0,0) ; (0,0,0,1,0,0,0,0) ; (0,0,0,0,1,0,0,0) ; (0,0,0,0,0,1,0,0) ; (0,0,0,0,0,0,1,0) ; (0,0,0,0,0,0,0,1) ; 
(0,1,0,0,0,0,0,0) ; (-1,0,0,0,0,0,0,0) ; (0,0,0,1,0,0,0,0) ; (0,0,-1,0,0,0,0,0) ; (0,0,0,0,0,1,0,0) ; (0,0,0,0,-1,0,0,0) ; (0,0,0,0,0,0,0,-1) ; (0,0,0,0,0,0,1,0) ; 
(0,0,1,0,0,0,0,0) ; (0,0,0,-1,0,0,0,0) ; (-1,0,0,0,0,0,0,0) ; (0,1,0,0,0,0,0,0) ; (0,0,0,0,0,0,1,0) ; (0,0,0,0,0,0,0,1) ; (0,0,0,0,-1,0,0,0) ; (0,0,0,0,0,-1,0,0) ; 
(0,0,0,1,0,0,0,0) ; (0,0,1,0,0,0,0,0) ; (0,-1,0,0,0,0,0,0) ; (-1,0,0,0,0,0,0,0) ; (0,0,0,0,0,0,0,1) ; (0,0,0,0,0,0,-1,0) ; (0,0,0,0,0,1,0,0) ; (0,0,0,0,-1,0,0,0) ; 
(0,0,0,0,1,0,0,0) ; (0,0,0,0,0,-1,0,0) ; (0,0,0,0,0,0,-1,0) ; (0,0,0,0,0,0,0,-1) ; (-1,0,0,0,0,0,0,0) ; (0,1,0,0,0,0,0,0) ; (0,0,1,0,0,0,0,0) ; (0,0,0,1,0,0,0,0) ; 
(0,0,0,0,0,1,0,0) ; (0,0,0,0,1,0,0,0) ; (0,0,0,0,0,0,0,-1) ; (0,0,0,0,0,0,1,0) ; (0,-1,0,0,0,0,0,0) ; (-1,0,0,0,0,0,0,0) ; (0,0,0,-1,0,0,0,0) ; (0,0,1,0,0,0,0,0) ; 
(0,0,0,0,0,0,1,0) ; (0,0,0,0,0,0,0,1) ; (0,0,0,0,1,0,0,0) ; (0,0,0,0,0,-1,0,0) ; (0,0,-1,0,0,0,0,0) ; (0,0,0,1,0,0,0,0) ; (-1,0,0,0,0,0,0,0) ; (0,-1,0,0,0,0,0,0) ; 
(0,0,0,0,0,0,0,1) ; (0,0,0,0,0,0,-1,0) ; (0,0,0,0,0,1,0,0) ; (0,0,0,0,1,0,0,0) ; (0,0,0,-1,0,0,0,0) ; (0,0,-1,0,0,0,0,0) ; (0,1,0,0,0,0,0,0) ; (-1,0,0,0,0,0,0,0) ; 
 
i'*(e'*j) : (0,0,0,1,0,0,0,0) ;
(i'*e')*j : (0,0,0,-1,0,0,0,0) ;
 

*** No errors detected

