Zaawansowane CPP/Ćwiczenia 8: Metaprogramowanie
Uwaga: przekonwertowane latex2mediawiki; prawdopodobnie trzeba wprowadzi� poprawki
{Metaprogramowanie}
Zadanie 1 Napisać szablon funkcji lub klasy wyliczający funkcję silnia:
Zadanie 2 Zmodyfikować szablon Sqrt
tak aby liczył
całkowite przyliżenie logarytmu liczby o dowolnej całkowitej
podstawie P<N
. Logarytm z liczby przy podstawie
oznaczany to rozwiązanie równania:
Wskażówka Najpierw zaimplementuj szablon liczący dowolną (calkowitą) potęgę liczby całkowitej.
Zadanie 3
Wymyśl i zaimplementuj jako metaprogram, szybszy algorytm funkcji pow(x)
.
Wskażówka
Zadanie 4
Napisz szablon generujący, pierwsze N
wyrazów rozwinięcia funkcji
sin(x)
:
Zadanie 5
Napisz szablon generujący funkcję implementującą iloczyn skalarny dwu wektorów. Parametrem szablonu ma być dlugość możonych szablonów.
Zadanie 6
Napisz szablon generujący funkcję implementujący iloczyn macierzy
NxM
i wektora o M
elementach:
void matrix_v<N>(double *A,double *v,double *u)
powoduje obliczenie:
Tablica jest reprezentowana w pamięci zgodnie z konwencją C
, tzn.
elementowi odpowiada A[M*i+j]
.