martedì 7 agosto 2018

Quater square multiplication

Un metodo per effettuare moltiplicazioni usando somme e sotttrazioni ed una tabella di lookup

La tabella di lookup e' formata dalla parte intera della divisione per 4 di quadrati dei numeri interi

---------------------------------
for i in range (20):
print (int(i*i/4))
-----------------------------------------

lookup = [0,0,1,2,4,6,9,12,16,20,25,30,36,42,49,56,64,72,81,90]

si usa la seguente identita'


per esempio se si vuole moltiplicare x=7 per y=5 si calcola la differenza (2) e la somma (12). Si guarda nella tabella di lookup le posizioni 2 e 12 che corrispondono ai valori 1 e 36 (in pratica dalla tabella si ricavano (x +y)^2/4 e (x -y)^2/4 . A questo punto basta effettuare la sottrazione (36-1) per avere il risultato della moltiplicazione

---------------------------------
lookup = [0,0,1,2,4,6,9,12,16,20,25,30,36,42,49,56,64,72,81,90]

m1 = 7
m2 = 5
diff = m1 - m2
somma = m1 + m2
a1 = lookup[diff]
a2 = lookup[somma]

risultato = a2 - a1
print (risultato)
---------------------------------

Una accortezza: i valori dei moltiplicatori devono essere ordinati con m1>m2

Nessun commento:

Posta un commento

Physics informed neural network Fukuzono

Visto che puro ML non funziona per le serie tempo di cui mi sto occupando ed le regressioni basate su formule analitiche mostrano dei limiti...