increase factorial execution speed

Hello there
I'm attempting to use the prod function to construct the factorial code more quickly, but I'm encountering a problem.
Please let me know the reason for this and what I might be doing incorrectly.
Many thanks
n = fi(1); % n max is 20
n =
1 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 14
indx = max(1,max(min(n,20)));
for g = 1:indx
out(:) = prod(1:indx,'all');
end
Error using prod
Invalid data type. First argument must be numeric or logical.

 Respuesta aceptada

Chunru
Chunru el 2 de Sept. de 2022
Editada: Chunru el 2 de Sept. de 2022
n = 5 % n max is 20
n = 5
out = cumprod(1:n)
out = 1×5
1 2 6 24 120
n = fi(5); % n max is 20
out = (1:n);
for i = 2:n
out(i) = out(i-1)*i;
end
out
out =
1 2 6 24 120 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 0

6 comentarios

Life is Wonderful
Life is Wonderful el 2 de Sept. de 2022
How ?
Error is due to "Invalid data type" and not in due to prod.
Chunru
Chunru el 2 de Sept. de 2022
You use "fi", or fixed point format. The prod function does not support the data type.
In above, I use double type for all data.
You see Error,
n = fi(1); % n max is 20
indx = max(1,max(min(n,20)));
for g = 1:indx
out(:) = cumprod(1:indx);
end
Error using cumprod
Invalid data type. First input argument must be numeric or logical.
Life is Wonderful
Life is Wonderful el 2 de Sept. de 2022
Yes, I did specify that the code I'm using is fixed point rather than double.
Do you have another suggestion?
Chunru
Chunru el 2 de Sept. de 2022
See above for the fi data type.
Life is Wonderful
Life is Wonderful el 5 de Sept. de 2022
Thanks a lot,

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Simulink en Centro de ayuda y File Exchange.

Productos

Versión

R2022a

Etiquetas

Preguntada:

el 2 de Sept. de 2022

Comentada:

el 5 de Sept. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by