2013-04-09 9 views
6

Pracowałem ostatnio z algorytmami arbitralnej precyzji i jestem niezmiernie ciekawy, jak Python się tym zajmuje. Kiedy wpisuję bardzo duże (600-1000) cyfry podzielone przez inną podobnie dużą liczbę, to po prostu działa i kocham to. Mam pliki źródłowe Pythona i mam się dobrze z C, gdzie/gdzie w źródle jest ta część, która rządzi tym podziałem, więc mogę na to patrzeć i być może majstrować przy tym? Moją grą końcową jest praca w teorii liczb w C.Python Pełna precyzja Division Źródło

+0

Wierzę, że Python używa [biblioteki GMP] (http://gmplib.org/). – Mysticial

+1

Chcesz szukać w 'Objects/longobject.c' w źródle python2.x. Nie jestem pewien, gdzie to jest w python3.x source – mgilson

+0

Wygląda na to, że jest to funkcja 'l_divmod' oparta na komentarzach. – mgilson

Odpowiedz

2

Rdzeń implementacji long/long w Pythonie 3.3 jest w longobject.c, jako funkcja x_divrem.

Implementacja jest wzorowana na dziele Knuth "The Art of Computer Programming", tom. 2 (3 wydanie), rozdział 4.3.1, Algorytm D "Podział nieujemnych liczb całkowitych", za komentarz ze źródła.

+0

jesteś niesamowity. Wygląda na to, że będę dużo czytać w ten weekend. :) – user1601118