Question

Son disponible pour moi Consigner uniquement (base "e"), le péché, tan et sqrt fonctions (seule racine carrée) et les opérateurs arithmétiques de base (+ - * / mod). J'ai aussi la constante "e".

J'expérimente plusieurs problèmes avec Déluge (zoho.com) pour ces restrictions. Il faut mettre en oeuvre l'exponentiation de bases rationnelles (fraction) et les exposants.

Était-ce utile?

La solution

Dites que vous voulez calculer pow(A, B)

Considérons la représentation de B en base 2:

B = b[n]   * pow(2, n    ) +
    b[n-1] * pow(2, n - 1) +
    ...
    b[2]   * pow(2, 2    ) +
    b[1]   * pow(2, 1    ) +
    b[0]   * pow(2, 0    ) +
    b[-1]  * pow(2, -1   ) +
    b[-2]  * pow(2, -2   ) +
    ...

 = sum(b[i] * pow(2, i))

b[x] peut être 0 ou 1 et pow(2, y) est une puissance entière de deux (à savoir, 1, 2, 4, 1/2, 1/4, 1/8).

Alors,

pow(A, B) = pow(A, sum(b[i] * pow(2, i)) = mul(pow(A, b[i] * pow(2, i)))

Et pow(A, B) peut être calculé en utilisant uniquement des multiplications et des opérations de racine carrée

Autres conseils

Si vous avez une fonction F () qui fait e ^ x, où e est la constante, et x est un nombre, vous pouvez faire ceci: (a est la base, b est l'exposant, ln est log-e)

a ^ b = F (b * ln (a))

Si vous ne disposez pas que F () ne e ^ x, alors il est plus compliqué. Si votre exposant (b) est rationnel, alors vous devriez être en mesure de trouver des entiers m et n pour que b = m / n, en utilisant une boucle de quelque sorte. Une fois que vous avez m et n, vous faire une autre boucle qui multiples un par lui-même m fois pour obtenir un ^ m, puis des multiples un par lui-même n fois pour obtenir un ^ n, puis diviser un ^ m / a ^ n pour obtenir un ^ (m / n), qui est a ^ b.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top