Just another update
This commit is contained in:
parent
a25938f123
commit
00a190b0a6
6591 changed files with 94363 additions and 23227 deletions
79
Task/Fibonacci-sequence/ATS/fibonacci-sequence-4.ats
Normal file
79
Task/Fibonacci-sequence/ATS/fibonacci-sequence-4.ats
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
(* ****** ****** *)
|
||||
//
|
||||
// How to compile:
|
||||
// patscc -o fib fib.dats
|
||||
//
|
||||
(* ****** ****** *)
|
||||
//
|
||||
#include
|
||||
"share/atspre_staload.hats"
|
||||
//
|
||||
(* ****** ****** *)
|
||||
//
|
||||
abst@ype
|
||||
int3_t0ype =
|
||||
(int, int, int)
|
||||
//
|
||||
typedef int3 = int3_t0ype
|
||||
//
|
||||
(* ****** ****** *)
|
||||
|
||||
extern
|
||||
fun int3 : (int, int, int) -<> int3
|
||||
extern
|
||||
fun int3_1 : int3 -<> int
|
||||
extern
|
||||
fun mul_int3_int3: (int3, int3) -<> int3
|
||||
|
||||
(* ****** ****** *)
|
||||
|
||||
local
|
||||
|
||||
assume
|
||||
int3_t0ype = (int, int, int)
|
||||
|
||||
in (* in-of-local *)
|
||||
//
|
||||
implement
|
||||
int3 (x, y, z) = @(x, y, z)
|
||||
//
|
||||
implement int3_1 (xyz) = xyz.1
|
||||
//
|
||||
implement
|
||||
mul_int3_int3
|
||||
(
|
||||
@(a,b,c), @(d,e,f)
|
||||
) =
|
||||
(a*d + b*e, a*e + b*f, b*e + c*f)
|
||||
//
|
||||
end // end of [local]
|
||||
|
||||
(* ****** ****** *)
|
||||
//
|
||||
implement
|
||||
gnumber_int<int3> (n) = int3(n, 0, n)
|
||||
//
|
||||
implement gmul_val<int3> = mul_int3_int3
|
||||
//
|
||||
(* ****** ****** *)
|
||||
//
|
||||
fun
|
||||
fib (n: intGte(0)): int =
|
||||
int3_1(gpow_int_val<int3> (n, int3(1, 1, 0)))
|
||||
//
|
||||
(* ****** ****** *)
|
||||
|
||||
implement
|
||||
main0 () =
|
||||
{
|
||||
//
|
||||
val N = 10
|
||||
val () = println! ("fib(", N, ") = ", fib(N))
|
||||
val N = 20
|
||||
val () = println! ("fib(", N, ") = ", fib(N))
|
||||
val N = 30
|
||||
val () = println! ("fib(", N, ") = ", fib(N))
|
||||
val N = 40
|
||||
val () = println! ("fib(", N, ") = ", fib(N))
|
||||
//
|
||||
} (* end of [main0] *)
|
||||
Loading…
Add table
Add a link
Reference in a new issue