|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3072 (0xc00)
Types: TextFile
Names: »marctx«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦80900d603⟧ »giprocfile«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦80900d603⟧ »giprocfile«
└─⟦this⟧
; m_arctx * page 1 23 11 77, 14.23;
; m_arc
if listing.yes
char 10 12 10
m_arc = set 1
m_arc = algol
external long procedure m_arc
_____________________________
_ (a, f, mode, B);
value a, f, mode, B;
long a, B;
integer mode;
real f;
comment
The procedure performs computation of
length of meridian at latitude B - mode = 1
latitude when length of meridian is given - mode = 2
Formulas from Kønig/Weise I.97, I.97a
m_arc (return) long
mode = 1 - length of meridian arc in units of '-6 m
mode = 2 - geodetic latitude as geotype variable
a (call) long
semi-diameter in units of '-6
f (call) real
flattening
mode (call) integer
B (call) long
mode = 1 - geodetic latitude as geotype variable
mode = 2 - length of meridian arc in units of '-6 m;
begin
real n1, n2, n3, n4, n5, argm, wr;
array m(0:5);
integer q;
long w, ab, save_B;
boolean neg;
n1:=f/(2 - f);
n2:=n1*n1;
n3:=n2*n1;
n4:=n3*n1;
n5:=n4*n1;
w:=a*f;
ab:=a - w;
ab:=a + ab;
wr:=n2/4 + n4/64;
w:=ab*wr;
ab:=ab + w;
neg:=B < 0;
if neg then B:=-B;
\f
comment m_arctx * page 2 23 11 77, 14.23
0 1 2 3 4 5 6 7 8 9 ;
w := -3.673 205 1035'-6*ab;
ab := ab <* *1 *>
_ + ((ab + 4)//5)*3 <* *1.6 *>
_ - ((ab + 99)//100)*3 <* *1.57 *>
_ + (ab + 1249)//1250 <* *1.0008 *>
_ + w;
case mode of
begin
begin
m(1) := -3*n1/2 + 9*n3/16 - 3*n5/32;
m(2) := 15*n2/16 - 15*n4/32;
m(3) := -35*n3/48 + 105*n5/256;
m(4) := 315*n4/512;
m(5) := -693*n5/1280;
argm:=2*B*rg;
w:=clenshaw(m, 5, argm, 2)/rg;
B:=B + w;
w:=0;
for q:=1 step 1 until 47 do
begin
if B extract 1 = 1 then w:=w + ab;
w:=(w + 1) shift (-1);
B:=B shift (-1);
end;
end;
begin
m(1) := 3*n1/2 - 27*n3/32 + 269*n5/512;
m(2) := 21*n2/16 - 55*n4/32;
m(3) := 151*n3/96 - 417*n5/128;
m(4) := 1097*n4/512;
m(5) := 8011*n5/2560;
w:=0;
save_B:=B;
for q:=1 step 1 until 47 do
begin
B:=B - ab;
if B >= 0 then
w:=w + 1
else
B:=save_B;
w:=w shift 1;
B:=save_B:= B shift 1;
end;
argm:=2*w*rg;
B:=clenshaw(m, 5, argm, 2)/rg;
w:=w + B;
end;
end;
\f
comment m_arctx * page 3 23 11 77, 14.23
0 1 2 3 4 5 6 7 8 9 ;
marc:=if neg then -w else w;
end;
end
if warning.yes
(mode 0.yes
message m_arc not ok
lookup m_arc)
▶EOF◀