BerndNeumann.eu
Philosophie
Ökonomie
Technologie

prime:: namespace
function templates

Dies ist Version 0.4 des prime:: namespace function templates.

Download

prime_namespace_function_templates_v04.tar.bz2
prime.hpp
prime_namespace_function_templates_v04_manual.pdf

Features

  • Easy. Das function template untersützt alle sinnvollen Datentypen. Es müssen keine Objekt-Dateien kompiliert und verlinkt werden.
  • Fast. Die Algorithmen nutzen Multithreading und bieten für Integer bis 32 bit ein extrem schnelles Ergebnis.
  • Safe. Mit den neuesten c++ Features ist das Problem der Mehrdeutigkeit bei der overload resolution gelöst. Die Funktionen antworten immer mit dem richtigen Ergebnis. Es ist egal, mit welchem Datentyp die Funktion aufgerufen wird: If it compiles, it works!
  • Free. Diese Software ist unter der GNU General Public Licence version 3 lizensiert.
  • Extensively documented. Die Bedienungsanleitung enthält ausführliche Informationen über die Algorithmen. Darüber hinaus sind theoretische Überlegungen, Messungen und einige Anmerkungen enthalten, die sowohl für Anfänger als auch für fortgeschrittene Programmierer von Nutzen sein können.

Eine kurze hands on Anleitung für Anfänger

1. Includieren. Um die Funktionen dieses function templates zu nutzen, mußt Du lediglich die Datei prime.hpp inkludieren wie Du es von anderen header file kennst. Denke daran, die "" zu nutzen statt <> wie Du es von den Includes der Standard-Bibliothek gewohnt bist. Du kannst prime.hpp inkludieren wo immer es erforderlich ist. Die eingebauten header guards schützen vor Mehrfach-Inkludierung.


#include <iostream>
#include "prime.hpp"

2. Anwenden. Für einen schnellen und leichten Start empfehle ich Dir, die Variablen als unsigned long long int zu deklarieren. Schau in das Manual, um mit beliebig großen Zahlen zu rechnen oder die 32bit-Optimierung zu nutzen. Dieses Program zeigt wie einfach es ist:


int main()
    {
    
    unsigned long long int n = 11;
    std::cout << std::boolalpha;
    std::cout << prime::isprime(n) << std::endl;
    // outputs "true"
    
    n = prime::nextprime(n);
    std::cout << n << std::endl;
    // outputs "13"
    
    n = prime::prevprime(n);
    std::cout << n << std::endl;
    // outputs "11"
    
    return 0;
    }

3. Kompilieren. Wenn Du mit g++ oder clang++ kompilierst, benötigst Du die Option -std=c++17, damit die neusten C++ Features ohne Warnungen umgesetzt werden. Das Multithreading erfordert die Option -pthread, und für schnelleren Maschinen-Code ist -O3 eine gute Wahl. Diese Optionen sind bei beiden Kompilern gleich.

Du mußt keine Objekt-Dateien kompilieren und später verlinken. Die Funktionen werden beim Kompilieren entsprechend Deiner Aufrufe aus dem Template erstellt. Kompiliere einfach mit:


g++ -std=c++17 -pthread -O3 myprogram.cpp

Viel Spaß!

21.04.2020