Overview
-"HS" calculates the hypervolume ( Vn ) and the hypersurface
area ( Sn ) of an n-dimensional unit hypersphere ( 1 <
n < 188 )
-If the radius of the hypersphere equals R, multiply Vn by Rn
and Sn by Rn-1
4 Programs
Data Registers: /
Flags: /
Subroutines: /
| 01 LBL "HS" 02 ENTER^ 03 STO Z 04 2 05 ST/ Z 06 MOD 07 1 08 + 09 X<>Y 10 INT 11 STO Z 12 LBL 01 13 CLX 14 PI 15 ST* Y 16 X<> L 17 ST/ Y 18 SIGN 19 ST- L 20 DSE Z 21 GTO 01 22 R^ 23 * 24 X<>Y 25 ST* Y 26 END |
( 43 bytes / SIZE 000 )
| STACK | INPUTS | OUTPUTS |
| Y | / | Sn |
| X | n | Vn |
| L | / | n |
Examples:
3 XEQ "HS" >>>>
V3 = 4.1888
X<>Y S3 = 12.5664
4 R/S
>>>> V4 = 4.9348
X<>Y S4 = 19.7392
187 R/S
>>>> V187 = 2.7182 10-99
X<>Y S187 = 5.0830 10-97
( in 31seconds )
-Vn is maximum for n = 5 and Sn is maximum
for n = 7.
-For n > 187 this program returns zero.
Data Registers: R00 = n
Flags: /
Subroutines: /
| 01 LBL "HS" 02 STO 00 03 2 04 / 05 ENTER 06 INT 07 X=Y? 08 GTO 01 09 FACT 10 PI 11 LASTX 12 Y^X 13 * 14 2 15 RCL 00 16 Y^X 17 * 18 RCL 00 19 GTO 02 20 LBL 01 21 PI 22 LASTX 23 Y^X 24 LASTX 25 LBL 02 26 FACT 27 / 28 RCL 00 29 X<>Y 30 ST* Y 31 END |
( 41 bytes / SIZE 001 )
| STACK | INPUTS | OUTPUTS |
| Y | / | Sn |
| X | n | Vn |
Examples:
69 XEQ "HS" >>>> V69 = 8.1475 10-23 X<>Y S69 = 5.6218 10-21 ( 1 < n < 70 )138 XEQ "HS" >>>> V138 = 1.1750 10-64 X<>Y S138 = 1.6215 10-62 ( 1 < n < 139 )
-We can also compute V and S with n and R
Data Registers: R00 = n R01 = R
Flags: /
Subroutines: /
| 01 LBL "HS" 02 STO 01 03 X<>Y 04 STO 00 05 2 06 / 07 ENTER 08 INT 09 X=Y? 10 GTO 01 11 FACT 12 PI 13 LASTX 14 Y^X 15 * 16 2 17 RCL 00 18 Y^X 19 * 20 RCL 00 21 GTO 02 22 LBL 01 23 PI 24 LASTX 25 Y^X 26 LASTX 27 LBL 02 28 FACT 29 / 30 RCL 00 31 X<>Y 32 ST* Y 33 RCL 01 34 RCL 00 35 DSE X 36 Y^X 37 ST* Z 38 * 39 RCL 01 40 * 41 END |
( 53 bytes / SIZE 002 )
| STACK | INPUTS | OUTPUTS |
| Y | n | Sn |
| X | R | Vn |
Examples: n = 8 or 9 ,
R = 20
20 XEQ "HS" >>>> V8 = 1.0390 1011 X<>Y S8 = 4.1561 1010 ( 1 < n < 70 )
9 ENTER^
20 XEQ "HS" >>>> V9 = 1.6888 1012 X<>Y S9 = 7.5998 1011 ( 1 < n < 139 )
-Here is a smaller program:
Data Registers: R00 and R01
Flags: /
Subroutines: /
| 01 LBL "HS" 02 STO 01 03 2 04 / 05 STO 00 06 FRC 07 PI 08 1/X 09 X<>Y 10 X#0? 11 X<>Y 12 X=0? 13 SIGN 14 RCL 00 15 LBL 01 16 / 17 PI 18 * 19 DSE 00 20 ABS 21 RCL 00 22 X>0? 23 GTO 01 24 CLX 25 RCL 01 26 X<>Y 27 ST* Y 28 R^ 29 ST/ Z 30 RCL 01 31 Y^X 32 ST* Z 33 * 34 END |
( 46 bytes / SIZE 002 )
| STACK | INPUTS | OUTPUTS |
| Y | R | Sn |
| X | n | Vn |
-With 1 < n < 186 if R is not too large.
Examples: n = 8 or 9 ,
R = 20
8 XEQ "HS" >>>> V8 = 1.0390 1011 X<>Y S8 = 4.1561 1010
20 ENTER^
9 XEQ "HS" >>>> V9 = 1.6888 1012 X<>Y S9 = 7.5998 1011