O makrech, která umí aritmetiku s velkými čísly. Macros Which Handle Arithmetics with Big Numbers. Jan Šustek KMa PřF OU. Brejlov

Podobné dokumenty
Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Introduction to MS Dynamics NAV

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Paradigmata programování II Korutiny a nedeterminismus

NPRG030 Programování I, 2018/19 1 / :25:37

Je n O(n 2 )? Je n 2 O(n)? Je 3n 5 +2n Θ(n 5 )? Je n 1000 O(2 n )? Je 2 n O(n 2000 )? Cvičení s kartami aneb jak rychle roste exponenciála.

Dynamic programming. Optimal binary search tree

Definice funkcí a procedur. Mnoho operací provozujeme opakovaně, proto je hloupé programovat je při každém použití znovu.

3. Aritmetika nad F p a F 2

Úvod do Operačních Systémů

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

WORKSHEET 1: LINEAR EQUATION 1

1. Maple - verze. 2. Maple - prostredi. Document Mode vs. Worksheet Mode

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Algoritmus. Algoritmus je posloupnost kroků, které jsou potřeba k vyřešení problému.

Vytvoření pokročilé Fotogalerie v Drupalu - Views

PARADIGMATA PROGRAMOVÁNÍ 2 KORUTINY, NEDETERMINISMUS

A4B99RPH: Řešení problémů a hry Čistý kód.

Úvod do programování

Struktura programu v době běhu

Compression of a Dictionary

Transportation Problem

Programování v Pythonu

PARADIGMATA PROGRAMOVÁNÍ 2A INTERPRET S VEDLEJŠÍMI EFEKTY A MAKRY

Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi


PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Server Internetu prostøednictvím slu eb (web, , pøenos souborù) poskytuje data. Na na í pracovní stanici Internet

Server Internetu prostøednictvím slu eb (web, , pøenos souborù) poskytuje data. Na na í pracovní stanici Internet

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

IB111 Základy programování Radek Pelánek

Next line show use of paragraf symbol. It should be kept with the following number. Jak může státní zástupce věc odložit zmiňuje 159a.

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Objektové programování

Algoritmizace a programování

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =

dovolují dělení velkých úloh na menší = dekompozice

Poslední nenulová číslice faktoriálu

PARADIGMATA PROGRAMOVÁNÍ 2A MAKRA III


Návrh a implementace algoritmů pro adaptivní řízení průmyslových robotů

Využití hybridní metody vícekriteriálního rozhodování za nejistoty. Michal Koláček, Markéta Matulová

Testování prvočíselnosti

Kompaktní vyvrtávací stroj pro výrobce oken a dveří Compact boring machine for manufacturers of windows and doors.

Stabilita v procesním průmyslu

Digital Electronics. Jaroslav Bernkopf. 17 October 2008

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

3. Derivace funkce Definice 3.1. Nechť f : R R je definována na nějakém okolí U(a) bodu a R. Pokud existuje limita f(a + h) f(a) lim

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Stručný úvod do programování v jazyce C 2.díl. České vysoké učení technické Fakulta elektrotechnická

Matematika. Gymnázium, Praha 6, Arabská 16. předmět Programování, vyučující Tomáš Obdržálek. dokumentace ročníkového projektu.

Programovací software Oblast režimů Oblast nástrojů Složka aplikací pro různé funkce: Oblast tlačítek Tlačítko Loading (Načítání)

Gymnázium, Brno, Slovanské nám. 7 WORKBOOK. Mathematics. Teacher: Student:

Návrh. číslicových obvodů

Java Cvičení 05. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Úvod do Operačních Systémů

Časová a prostorová složitost algoritmů

2. Entity, Architecture, Process

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK. Registrační číslo: CZ.1.07/2.2.00/

GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)

Gymnázium, Brno, Slovanské nám. 7, SCHEME OF WORK Mathematics SCHEME OF WORK. cz

Transformace dat: používání syntaxe v SPSS

HASHING GENERAL Hashovací (=rozptylovací) funkce

Lua a LuaTeX - tutorial

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

WinCC/Calendar Scheduler. TIA na dosah

CZ.1.07/1.5.00/

Programovací jazyk Pascal

Image Analysis and MATLAB. Jiří Militky

Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Převod prostorových dat katastru nemovitostí do formátu shapefile

SIMATIC S7-1500(T) SIMOTION konfigurace systému Motion Control. Engineered with TIA Portal. Unrestricted Siemens AG 2017

CNC řízený vrtací a frézovací stroj pro výrobce oken a dveří CNC drilling machine for windows and doors manufacturers

Využití TEXu při organizaci Mezinárodní matematické soutěže Vojtěcha Jarníka

Příklady popisu základních obvodů ve VHDL

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz

Automatika na dávkování chemie automatic dosing

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

Příloha Jazyk Coach

Koncept stroje. Jak rozhýbat náčrtek stroje. unrestricted Siemens AG 2018

VYUŽITÍ DATA DRIVEN PAGES

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Úvod do datového a procesního modelování pomocí CASE Erwin a BPwin

DC circuits with a single source

2011 Jan Janoušek BI-PJP. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

PROFILY DO SÁDROKARTONU ARCHITECTURAL LED FIXTURES

Anotace. Jednotky (tvorba a využití), struktury (typ record),

Replikace. Pro a proti replikaci. Vztah ke škálovatelnosti (1)

Petr Vlk KPCS CZ. WUG Days října 2016

Transkript:

O makrech, která umí aritmetiku s velkými čísly Macros Which Handle Arithmetics with Big Numbers KMa PřF OU Brejlov.. 0

O makrech, která umí aritmetiku s velkými čísly Reprezentace čísel Representation of Numbers PrintForm A = Vhodné pro vstup a výstup pro uživatele Suitable for user input and output CsForm a 0 A = a n B n, B = 000, n= a 0 =, a =, a =, a =. Vhodné pro provádění operací Suitable for performing operations / BACK

Macros Which Handle Arithmetics with Big Numbers Reprezentace čísel Representation of Numbers PrintForm A = Vhodné pro vstup a výstup pro uživatele Suitable for user input and output CsForm a 0 A = a n B n, B = 000, n= a 0 =, a =, a =, a =. Vhodné pro provádění operací Suitable for performing operations / BACK

O makrech, která umí aritmetiku s velkými čísly Reprezentace v TEXu Representation in TEX \sub a[0] =, \sub a[] =, \sub a[] =, \sub a[] =. Implementace \let\ea\expandafter \def\name#{\csname#\endcsname} \def\nameedef#{\ea\edef\csname#\endcsname} \def\sub#[#]{\name{##}} \def\subedef#[#]{\nameedef{##}} Implementation \subedef a[0]{} \subedef a[]{} \subedef a[]{} \subedef a[]{} \sub a[] \name{a} \csname a\endcsname a / BACK

Macros Which Handle Arithmetics with Big Numbers Příklad sčítání Example Addition p 0 p 0 p 0 P = p n B n, Q = q n B n, P + Q =: R =: r n B n. n= n= n= Algoritmus Algorithm r n = p n + q n, n =,..., p 0 \cnta=0 \loop \ifnum\cnta<\sub p[0] \advance\cnta \cntb=\sub p[\the\cnta] \advance\cntb \sub q[\the\cnta] \subedef r[\the\cnta]{\the\cntb} \repeat V TEXu In TEX / BACK

O makrech, která umí aritmetiku s velkými čísly ArrayForm A = ;;;; A = ;;;0; Celé číslo je uloženo v jednom makru. To je nutné pro přenos hodnot mezi funkcemi. Převod z/do CsForm je rychlý. Number is entirely saved in one macro. This is necessary for carrying values between functions. Conversion from/to CsForm is fast. / BACK

Macros Which Handle Arithmetics with Big Numbers function f:integer; var A:integer; begin A:=; write(a); end; var A,B:integer; begin A:=; B:=f; write(a); end. Lokální definice Příklad v Pascalu Local Definitions Example in Pascal / BACK

O makrech, která umí aritmetiku s velkými čísly Příklad v TEXu Example in TEX \def\a{} \def\a{} \A \endgroup \A Nelokálnost v Pascalu Nonlocality in Pascal / BACK

Macros Which Handle Arithmetics with Big Numbers Příklad v TEXu Example in TEX \def\a{} \def\a{} \endgroup \A \endgroup \A Nelokálnost v Pascalu Nonlocality in Pascal / BACK

O makrech, která umí aritmetiku s velkými čísly Příklad v TEXu \def\a{} \def\a{} \ea\endgroup\ea\def\ea\a\ea{\a} \A \endgroup \A Nelokálnost v Pascalu Example in TEX Nonlocality in Pascal / BACK

Macros Which Handle Arithmetics with Big Numbers Příklad v TEXu \def\endgroupdef#{\ea\endgroup\ea\def\ea#\ea{#}} Example in TEX \def\a{} \def\a{} \EndGroupDef\A \A \endgroup \A Nelokálnost v Pascalu Nonlocality in Pascal / BACK

O makrech, která umí aritmetiku s velkými čísly Příklad v TEXu \def\endgroupdef#{\ea\endgroup\ea\def\ea#\ea{#}} Example in TEX \def\a{} \def\a{} \EndGroupDef\A \A \endgroup \A Nelokálnost v Pascalu function f(x:integer):integer; begin f:=x*x end; write(f()); Nonlocality in Pascal / BACK

Macros Which Handle Arithmetics with Big Numbers Volání funkcí Konstrukce pro volání funkcí je \SET\b\POWERMOD()[0;0;;;]<\a> Argumenty jsou makru \SET předávány v Function Calls Construction for calling functions is Arguments are passed to macro \SET in (PrintForm) [ArrayForm] <CsForm> Předchozí konstrukce se musí expandovat na \POWERMOD{;;}{0;0;;;}{;0;0;0;} \edef\b{\result} \EndGroupDef\b Vstupem každé funkce jsou argumenty v ArrayForm. Výsledek funkce je uložen v ArrayForm do makra \result. The above construction must be expanded to All arguments are passed to functions in ArrayForm. Result of a function is stored in ArrayForm to macro \result. / BACK

O makrech, která umí aritmetiku s velkými čísly \newcount\i \def\set##{ \def\res{#}\def\fun{#} \GetArity\j\fun \def\args{} \i=0 \GetArgs} \def\getargs{ \ifnum\i<\j \advance\i \ea\getarg \else \ea\call \fi} \def\call{ \ea\fun\args \ea\edef\res{\result} \ea\endgroupdef\res} Implementace Implementation / BACK

Macros Which Handle Arithmetics with Big Numbers Makro \GetArg musí zvládnout volání \GetArg() \GetArg[] \GetArg<> \def\getarg#{\name{ga#}} \namedef{ga(}#){ \edef\arg{#} \PrintToArray\arg\arg \AddArg} \namedef{ga[}#]{ \edef\arg{#} \AddArg} \namedef{ga<}#>{ \CsToArray#\arg \AddArg} \def\addarg{ \edef\args{\args{\arg}} \GetArgs} Implementace Macro \GetArg must handle calling Implementation / BACK

O makrech, která umí aritmetiku s velkými čísly Příklady Modulární násobení Examples Modular multiplication # # mod # \SetArity\MULTIPLYMOD \def\multiplymod###{ \SET\argA\MULTIPLY[#][#] \SET\argA\DIVIDE[\argA][#] \edef\result{\ea\secondoftwo\arga}} Výpis z log souboru při výpočtu Log file after computation mod Depth SET \a:=\multiplymod(;;0;)(;;;00;)(;;000;) Depth SET \arga:=\multiply[;;0;][;;;00;] Depth SET \arga:=\divide[;;;;;][;;000;] Depth SET \argd:=\multiply<;;000;>[;;] Depth SET \argd:=\multiply<;;000;>[;;] Depth SET \argd:=\multiply<;;000;>[;;] / BACK

Macros Which Handle Arithmetics with Big Numbers Ackermannova funkce Ackermann s function n + m = 0 A(m, n) = A(m, ) m > 0 n = 0 A(m, A(m, n )) m > 0 n > 0 \SetArity\ACKERMANN \def\ackermann##{\def\tmpa{0;} \def\tmpb{#} \ifx\tmpa\tmpb \SET\result\ADD[#]() \else \def\tmpb{#} \ifx\tmpa\tmpb \SET\argA\SUBTRACT[#]() \SET\result\ACKERMANN[\argA]() \else \SET\argA\SUBTRACT[#]() \SET\argB\SUBTRACT[#]() \SET\argB\ACKERMANN[#][\argB] \SET\result\ACKERMANN[\argA][\argB] \fi \fi} / BACK

\bye www.osu.cz/ ~ sustek