- •Постановка задачи
- •Теоретическая часть Погрешности вычисления Источники погрешности
- •Абсолютная и относительная погрешности
- •Распространение ошибок
- •Представление чисел в эвм
- •Практическая часть Алгоритм расчета функции синуса
- •Оценка погрешностей Погрешность входного параметра
- •Погрешность метода
- •Программа расчета функции синуса с использованием стандартной функции умножения.
- •Программа расчета функции синуса без использования стандартной функции умножения.
- •Заключение
- •Литература
Программа расчета функции синуса с использованием стандартной функции умножения.
|
Input x Begin In r1,x IfbZero r1 Call above_zero Call below_zero Above_zero Mov r3,a0 Mov r4,r1 Mul r4,a1 Add r3,r4 Mov r2,r1 Mul r2,r2 Mul r4,a2 Add r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a3 Sub r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a4 Add r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a5 Add r3,r4 Call OutPut below_zero Mov r3,a0 Mov r4,r1 Mul r4,a1 Add r3,r4 Mov r2,r1 Mul r2,r2 Mul r4,a2 Sub r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a3 Sub r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a4 Sub r3,r4 Mul r2,r1 Mov r4,r2 Mul r4,a5 Add r3,r4 Call OutPut Output Out [a],r3 End
|
Программа расчета функции синуса без использования стандартной функции умножения.
|
Input x Begin In r1,x IfbZero r1 Call above_zero Call below_zero Above_zero Mov r3,a0 Mov r4,r1 Mov x,r4 Mov y,a1 Call Mult Add r3,r4 Mov r2,r1 Mov x,r2 Mov y,a2 Call Mult Mov x,r4 Mov y,a2 Call Mult Add r3,r4 Mov x,r2 Mov y,a1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a3 Call Mult Sub r3,r4 Mov x,r2 Mov y,r1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a4 Call Mult Add r3,r4 Mov x,r2 Mov y,r1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a5 Call Mult Add r3,r4 Call OutPut below_zero Mov r3,a0 Mov r4,r1 Mov x,r4 Mov y,a1 Call Mult Add r3,r4 Mov r2,r1 Mov x,r2 Mov y,a2 Call Mult Mov x,r4 Mov y,a2 Call Mult Sub r3,r4 Mov x,r2 Mov y,a1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a3 Call Mult Sub r3,r4 Mov x,r2 Mov y,r1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a4 Call Mult Sub r3,r4 Mov x,r2 Mov y,r1 Call Mult Mov r4,r2 Mov x,r4 Mov y,a5 Call Mult Add r3,r4 Call OutPut Output Out [a],r3 End
|
Подпрограмма умножения Mult:
Mult
Skp y, 0
Add Res, x
Shr Res, 1
Skp y, 1
Add Res, x
Shr Res, 1
Skp y, 2
Add Res, x
Shr Res, 1
Skp y, 3
Add Res, x
Shr Res, 1
Skp y, 4
Add Res, x
Shr Res, 1
Skp y, 5
Add Res, x
Shr Res, 1
Skp y, 6
Add Res, x
Shr Res, 1
Skp y, 7
Add Res, x
Shr Res, 1
Skp y, 8
Add Res, x
Shr Res, 1
Skp y, 9
Add Res, x
Shr Res, 1
Skp y, 10
Add Res, x
Shr Res, 1
Skp y, 11
Add Res, x
Shr Res, 1
Skp y, 12
Add Res, x
Shr Res, 1
Copy r3, Res[30]
Return
Оценка времени выполнения программ
Программы отличаются только участками кода, где используются операции умножения. Для оценки будем использовать количество тактов, за которое выполняется участок программы. Будем считать, что каждая команда выполняется за 1 такт. Тогда машина с инструкцией умножения будет проводить вычисления максимум за 30 тактов, а машина с заменой инструкции умножения сдвигами и сложением – за 468 тактов. Таким образом, машина с инструкцией умножения работает примерно в 15 раз быстрее.