Closed4

TensorFlow Lite への acos (アークコサイン) の実装検討

PINTOPINTO
import tensorflow as tf
import math
# x = tf.constant(0.70710678118655) # cos45 = 0.70710678118655 = x
x = tf.constant(-0.5) # cos120 = -0.5 = x

neg = tf.math.divide(tf.math.multiply(tf.minimum(x, 0), -1), tf.abs(x))
x = tf.abs(x)
y = -0.0187293
y = tf.math.multiply(y, x)
y = tf.math.add(y, 0.0742610)
y = tf.math.multiply(y, x)
y = tf.math.subtract(y, 0.2121144)
y = tf.math.multiply(y, x)
y = tf.math.add(y, 1.5707288)
y = tf.math.multiply(y, tf.sqrt(tf.math.subtract(1.0, x)))
y = tf.math.multiply(y, tf.math.subtract(1.0, tf.math.multiply(2.0, neg)))
acos = tf.math.add(tf.math.multiply(neg, math.pi), y)
print(f'x: {x}')
print(f'neg: {neg}')
print(f'y: {y}')
print(f'acos: {acos}')
print(f'θ: {180 * acos / math.pi}')
x: 0.5
neg: 1.0
y: -1.0471513271331787
acos: 2.0944414138793945
θ: 120.00264739990234
このスクラップは2021/09/21にクローズされました