[三角函数]报错问题求助

运行环境

[Taichi] version 0.8.4, llvm 10.0.0, commit 895881b5, win, python 3.9.7

问题描述

import taichi as ti
ti.init(arch=ti.cpu)

@ti.kernel
def foo():
    print(ti.sin(0))
    print(ti.sin(1))
    print(ti.sin(2))

@ti.kernel
def bar():
    for i in ti.ndrange(3):
        print(ti.sin(i))

foo() # 可以执行
bar() # 报错

报错信息

[type_check.cpp:taichi::lang::TypeCheck::visit@257] [$26] Trigonometric operator takes real inputs only.

请问各位老师/同学bar()函数为什么会报错啊?是我的代码有问题吗?纯小白谢谢大家解答!

欢迎来到Taichi社区! 这里是因为 i 不是实数类型,而是一个taichi expression,转换一下类型就可以了:

import taichi as ti
ti.init(arch=ti.cpu)

@ti.kernel
def foo():
    print(ti.sin(0))
    print(ti.sin(1))
    print(ti.sin(2))

@ti.kernel
def bar():
    for i in ti.ndrange(3):
        print(ti.sin(ti.cast(i, float)))

# foo()
bar()

谢谢老师!

1 个赞