# Librerie standard delle funzioni native

Aseba fornisce una libreria standard delle funzioni native. Le piattaforme a microcontrollore utilizzate dovrebbero normalmente1 fornire questa libreria. Se il vostro firmware contiene una vecchia versione della macchina virtuale Aseba, non tutte le funzioni possono essere disponibili. Nelle versioni 1.1 e successive di Aseba sono disponibili le seguenti funzioni2:

`math.copy(A,B)`
  Copia l'array nell'array , elemento per elemento: .
`math.fill(A,c)`
  Assegna a ciascun elemento dell'array la costante : .
`math.addscalar(A, B, c)`
  Calcola dove è uno scalare.
`math.add(A, B, C)`
  Calcola dove , e sono tre arrays della stessa dimensione.
`math.sub(A, B, C)`
  Calcola dove , e sono tre arrays della stessa dimensione.
`math.mul(A, B, C)`
  Calcola dove , e sono tre array della stessa dimensione. Notare che questo non è un prodotto scalare
`math.div(A, B, C)`
  Calcola dove , e sono tre array della stessa dimensione. Viene sollevata una eccezione nel caso in cui uno degli elementi di C contenga zero.
`math.min(A, B, C)`
  Secrive il minimo valore di ciascun elemento di e in dove , e sono tre array della stessa dimensione: .
`math.max(A, B, C)`
  Scrive il massimo di ciascun elemento di e in dove , e sono tre array della stessa dimensione: .
`math.dot(r, A, B, n)`
  Calcola il prodotto scalare tra due arrays della stessa dimensione and :
`math.stat(V, min, max, mean)`
  Calcola il minimo, il massimo e il valore medio dell'array .
`math.argbounds(A, argmin, argmax)`
  Scrive in argmin e argmax l'indice corrispondente rispettivamente al valore minimo e massimo degli elementi dell'array .
`math.sort(A)`
  Ordina l'array .
`math.muldiv(A, B, C, D)`
  Calcola una moltiplicazione-divisione usando una precisione interna di 32\,bit : . Viene sollevata una eccezione in caso di divisione per zero.
`math.atan2(A, Y, X)`
  Calcola utilizzando i segni di e per determinare il quadrante di uscita. , e sono tre array della stessa dimensione. Notare che e produrranno .
`math.sin(A, B)`
  Calcola dove e sono due array della stessa diensione.
`math.cos(A, B)`
  Calcola dove e sono due array della stessa dimensione.
`math.rot2(A, B, angle)`
  Ruota l'array di angle, e scrive il risultato in . Notare che e devono essere entrambi di dimensione 2.
`math.sqrt(A, B)`
  Calcola dove e sono due array della stessa dimensione.
`math.nzseq(a, B, m)`
  scrive in l'indice medio della più lunga sequenza di elementi non nulli di , se non trovato o se la sequenza è di lunghezza minore di elementi.
`math.rand(v)`
  Restituisce un valore casuale nell'intervallo .