[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/sak-codes/lpython/main/integration_tests/generics_array_03.py [Back]  [Original]

from ltypes import TypeVar, restriction, i32, f32
from numpy import empty

n: i32
n = TypeVar("n")
m: i32
m = TypeVar("m")
T = TypeVar('T')

@restriction
def add(x: T, y: T) -> T:
    pass

def add_integer(x: i32, y: i32) -> i32:
    return x + y

def add_float(x: f32, y: f32) -> f32:
    return x + y

def g(n: i32, m: i32, a: T[n,m], b: T[n,m], **kwargs) -> T[n,m]:
    r: T[n,m]
    r = empty([n,m])
    i: i32
    j: i32
    for i in range(n):
      for j in range(m):
        r[i,j] = add(a[i,j],b[i,j])
    print(r[0,0])

def main():
    a_int: i32[1,1] = empty([1,1])
    a_int[0,0] = 400
    b_int: i32[1,1] = empty([1,1])
    b_int[0,0] = 20
    g(1, 1, a_int, b_int, add=add_integer)
    a_float: f32[1,1] = empty([1,1])
    a_float[0,0] = f32(400)
    b_float: f32[1,1] = empty([1,1])
    b_float[0,0] = f32(20)
    g(1, 1, a_float, b_float, add=add_float)

main()

Web Proxy Viewer  |  New URL  |  Original Page