Python aus C aufrufen: Eine praktische Anleitung

2025-05-29
Python aus C aufrufen: Eine praktische Anleitung

Dieser Artikel bietet eine praktische Schritt-für-Schritt-Anleitung, wie man Python-Funktionen aus C-Code aufruft. Beginnend mit den Grundlagen werden die Einrichtung der Umgebung unter Linux/Mac behandelt, einschließlich der Einbindung der Python.h-Headerdatei, der Kompilierung von C-Code und der Verwendung von Py_Initialize und Py_Finalize zum Initialisieren und Beenden des Python-Interpreters. Es wird detailliert beschrieben, wie man Python-Module lädt, Funktionsattribute abruft, Funktionen aufruft (sowohl ohne als auch mit Parametern) und den Speicher bereinigt. Anhand konkreter Codebeispiele lernen die Leser, wie man Python-Funktionen in C-Programme integriert und so eine nahtlose Interaktion zwischen C- und Python-Code ermöglicht.

Mehr lesen

Einführung in die Programmierung für Integer-Partitionen und -Kompositionen

2025-05-18
Einführung in die Programmierung für Integer-Partitionen und -Kompositionen

LeetArxiv hat Kapitel 1 seiner neuen Reihe veröffentlicht: "Was jeder Programmierer über die Aufzählende Kombinatorik wissen sollte". Es handelt sich um eine Einführung in Integer-Partitionen und -Kompositionen. Der Artikel verwendet einen zugänglichen Ansatz und führt Programmierer durch diese Konzepte mittels Beobachtung und Mustererkennung. C-Code wird bereitgestellt, um schwache Kompositionen zu generieren und diese effizient mit Binomialkoeffizienten und binärer Suche aufzuzählen.

Mehr lesen
Entwicklung

LeetArxiv: Reimplementierung eines Faktorisierungsalgorithmus für große Zahlen aus dem Jahr 1931

2025-03-30
LeetArxiv: Reimplementierung eines Faktorisierungsalgorithmus für große Zahlen aus dem Jahr 1931

LeetArxiv rekonstruiert einen Faktorisierungsalgorithmus für große Zahlen aus dem Jahr 1931 von Lehmer und Powers, der auf Kettenbrüchen basiert. Der Artikel erklärt den Algorithmus detailliert, einschließlich der Berechnung der Kettenbruchentwicklung einer Quadratwurzel und der Verwendung der resultierenden Koeffizienten (P und A) zur Faktorisierung. Ein Schritt-für-Schritt-Beispiel demonstriert die Details des Algorithmus und faktorisiert erfolgreich die Zahl 13290059. Dieser historisch bedeutsame Algorithmus war der erste, der eine sub-exponentielle Faktorisierungszeit erreichte.

Mehr lesen

LeetArxiv: LeetCode für Arxiv-Papers – Praktische Coding-Anleitungen für die Forschung

2025-02-24
LeetArxiv: LeetCode für Arxiv-Papers – Praktische Coding-Anleitungen für die Forschung

LeetArxiv bietet wöchentliche, schrittweise Coding-Anleitungen basierend auf Arxiv-Papers, die sich an Programmierer richten, die in die Forschung wechseln möchten. Eine Fallstudie konzentriert sich auf die Implementierung der AAN-diskreten Kosinustransformation (DCT) aus einem Paper von 1981. Die Anleitung bietet eine C-Implementierung (leicht auf andere Sprachen übertragbar), die die DCT-II-Gleichung und die AAN-Optimierungen detailliert beschreibt: Reduzierung teurer Kosinusberechnungen, Ausnutzung der Symmetrie, Verwendung vorab berechneter Konstanten und Ermöglichung von Parallelisierung. Die Anleitung umfasst den Ablaufplan und den Code des Algorithmus und macht so komplexe Forschung durch praktische Coding-Übungen zugänglich.

Mehr lesen

GPU-Emulation auf einer CPU mit Finite-Field-Assembler

2025-01-17
GPU-Emulation auf einer CPU mit Finite-Field-Assembler

Dieser Artikel stellt Finite Field Assembly (FF-asm) vor, eine neue Programmiersprache zur Emulation von GPUs auf CPUs. FF-asm verwendet ein rekursives Berechnungsmodell, wodurch SIMD-Vektorisierung oder OpenMP-Parallelisierung überflüssig werden. Es erreicht massive parallele Berechnungen auf einer CPU durch die Erstellung eines benutzerdefinierten mathematischen Systems, das auf der Theorie der endlichen Körper und Kongruenzen basiert. Der Artikel bietet schrittweise Codebeispiele, die Addition und Multiplikation in FF-asm demonstrieren und sein Potenzial für die GPU-Emulation aufzeigen.

Mehr lesen