"""
test7.py
Ceci est un exemple d'appel à une routine écrite en langage C.

Test la librairie de démo "test7.c"

"""

from math import sqrt
import test7

# pour afficher de l'aide sur les fonctions.
print(test7.sommeInv.__doc__)
print()
print(test7.sommeInv9.__doc__)
print()
print(test7.sommeInvx.__doc__)
print()
print(test7.Sc.__doc__)
print()

print("----- AAA -----")
print(test7.sommeInv9(1, 10000000)) # Somme du plus petit au plus grand nombre
print(test7.sommeInv9(10000000, 1)) # Somme du plus grand au plus petit nombre
# On remarque une différence sur les 3 ou 4 derniers chiffres.
# La première somme est plus précise.
print(test7.sommeInvx(1, 10000000, 9)) # Somme du plus petit au plus grand nombre
print(test7.sommeInvx(10000000, 1, 9)) # Somme du plus grand au plus petit nombre
# Les deux dernières somme sont exactement égales aux deux premières.
print()

print("----- BBB -----")
print(test7.sommeInv9(1, 10)) # 1/1 + 1/2 + 1/3 + 1/4 + ... + 1/8 (1/9 est éliminé)
print(test7.Sc(0, 1, 9)) 
# Pour tester
nn = 1
s=0
while (nn < 9):
    s += 1/nn
    nn +=1
print(s)
print()

print("----- CCC -----")
print(test7.sommeInv9(10, 100)) # 1/10 + 1/11 + 1/12 + 1/13 + 1/14 + ... + 1/88
   # Eliminé : 1/19, 1/29, ..., 1/79, 1/89 à 1/99
print(test7.Sc(1, 1, 9)) 
print(test7.Sc(1, 1, -9)) # Le signe "-" force la somme du plus petit au plus grand
# Pour tester
nn = 10
s=0
while (nn < 90):
    if (nn % 10 != 9):
        s += 1/nn
    nn +=1
print(s) # La somme du plus petit au plus grand est moins précise.
print()

print("----- DDD -----")
# Pour tester
print(test7.sommeInv9(100, 1000))
print(test7.Sc(2, 1, 9)) 
print()

print("----- EEE -----")
# Pour tester
print(test7.sommeInvx(100, 1000,8))
print(test7.Sc(2, 1, 8)) 
print()


print("----- FFF -----")
print(test7.Sc(0, 2, 9)) 
nn = 1
s=0
while (nn < 9):
    s += 1/nn**2
    nn +=1
print(s)
print()

print("----- GGG -----")
print(test7.Sc(1, 3, 9)) 
# Pour tester
nn = 10
s=0
while (nn < 90):
    if (nn % 10 != 9):
        s += 1/nn**3
    nn +=1
print(s)
print()

print("----- HHH -----")
# Pour tester
print(test7.sommeInv9(100000, 1000000))
print(test7.Sc(5, 1, 9))
# Les 5 derniers chiffres sont différents !
# La fonction  test7.Sc  peut être améliorée !
print(test7.sommeInvx(100000, 1000000, 8))
print(test7.Sc(5, 1, 8))
print()

# Pour tester
print(test7.sommeInv9(1000000, 10000000))
print(test7.Sc(6, 1, 9)) 
print()

# Pour tester
print(test7.sommeInv9(10000000, 100000000))
print(test7.Sc(7, 1, 9)) 
print()

print("----- III -----")
print(sqrt(6*test7.ScTot(15, 2, 19)))  # donne le nombre pi=3,141592653589793

# somme de 1 à 10^500 des inverse des nombres entiers n'ayant pas le chiffre "9"
print(test7.ScTot(500, 1, 9))
# La limite donne : 22,92067 66192 64150 34816 ...

# somme de 1 à 10^500 des inverse des nombres entiers
# = ln(10^501-1) + gamma, où gamma = la constante d'Euler-Mscheroni = 0,577 215 664 9...
print(test7.ScTot(500, 1, 19)) 

