Anteprima
Vedrai una selezione di 3 pagine su 7
Programma d'esame su Serie di Taylor in MIPS Pag. 1 Programma d'esame su Serie di Taylor in MIPS Pag. 2
Anteprima di 3 pagg. su 7.
Scarica il documento per vederlo tutto.
Programma d'esame su Serie di Taylor in MIPS Pag. 6
1 su 7
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Formattazione del testo

Questo perché la linearizzazione tende a venir meno man mano che x aumenta. Inoltre, il logaritmo non dipende dal fattoriale e quindi il passo della somma è più grossolano rispetto agli sviluppi dipendenti dal fattoriale.

NOTA: Gli sviluppi funzionano per x < 1.

datastr1: .asciiz "Inserisci l'argomento dello sviluppo. Attenzione: deve essere un numero <1 \n" str2: .asciiz "Inserisci l'ordine dello sviluppo in serie \n" str3: .asciiz "Scegli l'operazione: per sin inserire 0, per cos inserire 1, per sinh inserire 2, per cosh inserire 3, per exp inserire 4, per ln inserire 5 \n" err: .asciiz "Il valore inserito non è valido. \n" .data 0x10010200 risultati: .space 8 #posto dove memorizzare il risultato .text li $v0, 4 la $a0 str1 syscall #stampo stringa 1 li $v0, 6 #caricamento float da tastiera syscall #in f0 viene messo x inserito da tastiera li $t3, 1 mtc1 $t3, $f1 cvt.s.w $f1, $f1 c.lt.s $f1 , $f0 bc1t error mov.s $f12,


<p>$f0 #$f12 = $f0li $v0, 4la $a0 str2syscall #stampo stringa 2li $v0, 5 #caricamento intero da tastierasyscall #in v0 viene messo n inserito da tastieramove $s0, $v0 #$s0 = $v0li $v0, 4la $a0 str3syscall #stampo stringa 3 per scelta operazioneli $v0, 5 #caricamento intero da tastierasyscall #in v0 viene messo il valore che sceglie l'operazione da calcolaremove $t3, $v0 #$t3 = $v0slt $t4, $t3, $zero #se viene inserito un numero negativo si genera un messaggio d'errorebne $t4, 0, errorsgt $t4, $t3, 5 #se viene inserito un numero maggiore del numero di operazioni disponibili sigenera un messaggio d'errorebne $t4, 0, errorli $t1, 2la $t2, risultatibeq $t3, 0, sin #t3 = 0 vai a sinbeq $t3, 1, cos #t3 = 1 vai a cosbeq $t3, 2, sinh #t3 = 2 vai a sinhbeq $t3, 3, cosh #t3 = 3 vai a coshbeq $t3, 4, exp #t3 = 4 vai a expbeq $t3, 5, ln #t3 = 5 vai a ln#$s0 contiene il numero di elementi della serie da sommare#$f12 contiene l'argomento dello sviluppo#$a0 conterrà
</code>
</pre>Il testo formattato con i tag HTML è il seguente:

l'ordine dello sviluppo e verrà passato alle funzioni chiamatesin: #(-)^n X^(2n+1) / (2n+1)!mul $a0, $s0, 2addi $a0, $a0, 1 #$a0 = 2n+1jal fattorialemtc1 $v0, $f2 #fattoriale restituito in $v0cvt.s.w $f2, $f2 #$f2 conterrà il fattorialemul $a0, $s0, 2addi $a0, $a0, 1 #$a0 = 2n+1jal float_pow #arg elevato a 2n+1 calcolato, il risultato viene restituito in $f0div.s $f4, $f0, $f2 #Calcolo x^(2n+1) / (2n+1)! e ripongo il risultato in $f4div $s0, $t1mfhi $t3 #test per il segno. Se n pari lo conto positivo, altrimenti negativo.beq $t3, $zero, positivosub.s $f5, $f5, $f4 #Il registro $f5 fa da accumulatore per il risultatobeq $s0, $0, stop #se $s0 = 0, interrompo l'iterazioneaddi $s0, $s0, -1 #decremento l'ordinej sinpositivo:add.s $f5, $f5, $f4beq $s0, $0, stopaddi $s0, $s0, -1j sinexp: #somma di X^n /n!move $a0, $s0 #preparo $a0 con l'ordinejal fattorialemtc1 $v0, $f2cvt.s.w $f2, $f2 #$f2 contiene il fattorialemove $a0, $s0 #preparo $a0 con

l'ordinejal float_pow #storna i risultati della potenza in $f0

div.s $f4, $f0, $f2 #calcolo X^n /n! e ripongo tutto in $f4

add.s $f5, $f5, $f4 #$f5 fa da accumulatore

beq $s0, $0, stop #se l'ordine è nullo vado a stop

addi $s0, $s0, -1 #decremento l'ordine

j expsinh: #somma di x^(2n+1) / (2n+1)!

mul $a0, $s0, 2

addi $a0, $a0, 1 #$a0 = 2n+1

jal fattoriale

mtc1 $v0, $f2

cvt.s.w $f2, $f2 #fattoriale di 2n+1

mul $a0, $s0, 2

addi $a0, $a0, 1 #$a0 = 2n+1

jal float_pow #storna i risultati della potenza in $f0

div.s $f4, $f0, $f2 #Calcolo x^(2n+1) / (2n+1)! e ripongo il risultato in $f4

add.s $f5, $f5, $f4 #$f5 fa da accumulatore e conterrà il risultato finale

beq $s0, $0, stop #se l'ordine è 0 stop (il calcolo per n = 0 è stato già eseguito)

addi $s0, $s0, -1 #decremento l'ordine

j sinhcos: #somma di (-)^n x^2n / (2n)!

mul $a0, $s0, 2 #a0 = 2n

2njal float_pow #storna i risultati della potenza in $f0
div.s $f4, $f0, $f2 #Calcolo x^(2n) / (2n)! e ripongo il risultato in $f4
div $s0, $t1
mfhi $t3
beq $t3, $zero, pos #test per il segno. Se n pari lo conto positivo, altrimenti negativo.
sub.s $f5, $f5, $f4 #Il registro $f5 fa da accumulatore per il risultato
beq $s0, $0, stop #Se l'ordine è 0 stop (Il calcolo per 0 è già stato fatto)
addi $s0, $s0, -1 #decremento l'ordine
j cospos:
add.s $f5, $f5, $f4 #Il registro $f5 fa da accumulatore per il risultato
beq $s0, $0, stop
addi $s0, $s0, -1
j coscosh: #somma di x^2n / (2n)!
mul $a0, $s0, 2 #$a0 = 2n
jal fattoriale
mtc1 $v0, $f2
cvt.s.w $f2, $f2 #$f2 conterrà il fattoriale si 2n
mul $a0, $s0, 2 #$a0 = 2n
jal float_pow #storna i risultati della potenza in $f0
div.s $f4, $f0, $f2 #Calcolo x^(2n) / (2n)! e ripongo il risultato in $f4
add.s $f5, $f5, $f4 #Il registro $f5 fa da accumulatore per il risultato
beq $s0, $0, stop #Se l'ordine è 0 stop (Il calcolo
per 0 è già stato fatto)
addi $s0, $s0, -1 #decremento l'ordine
j coshln: #somma di (-)n+1 x^n / n, n parte da 1
beq $s0, $0, stop #se l'ordine è 0 stop. per n = 0 lo sviluppo non è definito
move $a0, $s0 #$a0 = n
jal float_pow #storna il risultato in $f0
mtc1 $s0, $f2
cvt.s.w $f2, $f2 #$f2 = n
div.s $f4, $f0, $f2 #x^n / n
div $s0, $t1 #test per il segno. Se n pari lo conto negativo, altrimenti positivo.
mfhi $t3
beq $t3, $zero, negativo
add.s $f5, $f5, $f4 #Il registro $f5 fa da accumulatore per il risultato
addi $s0, $s0, -1 #decremento l'ordine
j ln
negativo:
sub.s $f5, $f5, $f4
addi $s0, $s0, -1
j ln
float_pow:
#$f12 metto l'argomento, in $a0 l'ordine
#i parametri vengono passati con $f12 - $f15
Dettagli
Publisher
A.A. 2020-2021
7 pagine
1 download
SSD Ingegneria industriale e dell'informazione ING-INF/01 Elettronica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Vito_G17 di informazioni apprese con la frequenza delle lezioni di Architettura dei calcolatori e calcolatori elettronici e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pavia o del prof Ingegneria Prof.