%%HP: T(3)A(R)F(.); \<< IF DEPTH 0. \<= THEN DATE 100. * FP 10000. * END 1. \-> y g \<< CASE y TYPE 0. == THEN END y TYPE 28. == THEN END y # 202h DOERR END IF y 1582. < THEN y # 203h DOERR END y IP 'y' STO y @ y 19. @ 19 y MOD @ y % 19 'g' @ 'g' y % 19 STO+ y @ y 100. @ 100 y / @ y/100 IP @ intg(y/100) 1. @ 1 intg(y/100) + @ c=intg(y/100)+1; DUP @ c c 0.75 @ 0.75 c c * @ 0.75c c IP @ intg(0.75c) c 2. @ 2 intg(0.75 c) c - @ x=intg(0.75c)-2; c SWAP @ c x 0.32 @ 0.32 c x * @ 0.32c x 0.2 @ 0.2 0.32 c x + @ 0.32c+0.2 x IP @ z=intg(0.32c+0.2); x SWAP @ x z DUP @ x x z y @ y x x z 1.25 @ 1.25 y x x z * @ 1.25y x x z IP @ intg(1.25y) x x z SWAP @ x intg(1.25y) x z - @ d=intg(1.25y)-x; x z UNROT @ x z d 11. @ 11 x z d g @ g 11 x z d * @ 11g x z d 25. @ 25 11g x z d + @ 11g+25 x z d SWAP @ x 11g+25 z d - @ 11g+25-x z d + @ 11g+25+z-x d 30. @ 30 11g+25+z-x d MOD @ e=(11g+25+z-x)%30; d 24. @ 24. e d - @ f=e-24 d IF DUP @ f f d THEN 11. @ 11 f d g @ g 11 f d - @ 11-g f d SIGN @ sign(11-g) f d 2. @ 2 sign(11-g) f d / @ sign(11-g)/2 f d IP @ intg(sign(11-g)/2) f d NEG @ h=-intg(sign(11-g)/2) f d OVER @ f h f d == @ 1nebo0 f d ELSE 1. @ 1 f d END + @ f=f+1nebo0; d NEG @ n=-f; d DUP @ n n d IF 0 @ 0 n n d \<= @ 1nebo0 n d THEN 30. @ 30 n d + @ n=n+30; d END 20. @ 20 n d + @ n=n+20; d DUP @ n n d 7. @ 7 n n d + @ n+7 n d UNROT @ n d n+7 + @ d+n n+7 7. @ 7 d+n n+7 MOD @ (d+n)%7 n+7 - @ m=n+7-(d+n)%7; DUP @ m m y @ y m m UNROT @ m m y IF 31. @ 31 m m y > @ 1nebo0 m y THEN 31. @ 31 m y - @ m=m-31; y 4. @ 4=duben m y ELSE 3. @ 3=brezen m y END SWAP @ m 3nebo4 y IFERR { HOME PRGM ML20 ML20REQ } @ path m 3nebo4 y RCL @ << >> m 3nebo4 y THEN DROP @ m 3nebo4 y ELSE EVAL @ "YYYY-MM-DD" END \>> \>>