More PI

Library of images to use as OFFIMG screens on the DM41X and DM42
Forum rules
Do you have a creative streak? Post your OFFIMG photos here.

Images MUST be in Windows-NT .bmp format at a resolution of 400x240 pixels and 1-bit colour depth or they will not be displayed by the DM42. Images that do not meet this requirement will be removed from the forum :)
User avatar
rudi
Posts: 415
Joined: Wed Nov 03, 2021 9:03 am
Location: Denmark
Contact:

More PI

Post by rudi »

Why settle with 1584 or even 1715 digits of pi, when You can squeeze 4192 digits of pi onto the DM42 screen :P
Admitedly, it require good eyesight to read the digits, but they are there ;-)


Image
Attachments
pi_4192.bmp
pi_4192.bmp (12.25 KiB) Viewed 2170 times
Last edited by rudi on Mon Apr 25, 2022 8:57 am, edited 2 times in total.
/Rudi

DM-42 (s/n 06999), HP-42S, HP-35s, HP-11c, HP-32SII (ex HP-41CV, ex HP-75C, ex HP-48G + a lot, really lot of a accessories)
Denmark
User avatar
rudi
Posts: 415
Joined: Wed Nov 03, 2021 9:03 am
Location: Denmark
Contact:

Re: More PI

Post by rudi »

And here's the most I could squeeze onto the DM42 screen, still readable, 5019 digits and the decilmal point !!!
This version with more dense "0", "2", "3", "5", "6", "7" and "9" digits and no margins at all.

Can anyone squeeze more digits in? Consider this a challenge ;-)
(Digits must be in base 10)
Attachments
pi_5019.bmp
pi_5019.bmp (12.25 KiB) Viewed 2170 times
/Rudi

DM-42 (s/n 06999), HP-42S, HP-35s, HP-11c, HP-32SII (ex HP-41CV, ex HP-75C, ex HP-48G + a lot, really lot of a accessories)
Denmark
User avatar
Walter
Posts: 3070
Joined: Tue May 02, 2017 11:13 am
Location: On a mission close to DRS, Germany

Re: More PI

Post by Walter »

Holy cow! Consider this a vision test! No real world problem (Am: challenge) ever will need more digits of pi, so why press more in?
WP43 SN00000, 34S, and 31S for obvious reasons; HP-35, 45, ..., 35S, 15CE, DM16L S/N# 00093, DM42β SN:00041
User avatar
rudi
Posts: 415
Joined: Wed Nov 03, 2021 9:03 am
Location: Denmark
Contact:

Re: More PI

Post by rudi »

Walter wrote:
Mon Apr 25, 2022 9:22 am
Holy cow! Consider this a vision test! No real world problem (Am: challenge) ever will need more digits of pi, so why press more in?
He he - no, you're right. For most engineering problems, four to six digits of pi should be enough.
This is just for fun off course...

And btw - I cant read the digits, even with my extra strong reading glasses ;-)
I need my smartphone camera as a magnifying glass to see them...
/Rudi

DM-42 (s/n 06999), HP-42S, HP-35s, HP-11c, HP-32SII (ex HP-41CV, ex HP-75C, ex HP-48G + a lot, really lot of a accessories)
Denmark
Joe Horn
Posts: 108
Joined: Thu Oct 04, 2018 2:10 am

Re: More PI

Post by Joe Horn »

rudi wrote:
Mon Apr 25, 2022 8:46 am
Can anyone squeeze more digits in? Consider this a challenge ;-)
(Digits must be in base 10)
Using Braile digits (in base 10) instead of ordinary Arabic numerals would allow over 10K digits. :lol:
User avatar
rudi
Posts: 415
Joined: Wed Nov 03, 2021 9:03 am
Location: Denmark
Contact:

Re: More PI

Post by rudi »

Btw - I made the following C# code to generate the bitmaps.
There are two lists of digits, digits1 and digits2 for the two examples.

@Jon Horn, try this to generate your braille version ;-)

Code: Select all

public class Digit
{
    public Digit(string[] _lines)
    {
	lines = _lines;
    }

    //  Paints digit
    public void paint(Bitmap bmp, int x, int y)
    {
	for (int line = 0; line < lines.Length; ++line)
	    for (int pixel = 0; pixel < lines[line].Length; ++pixel)
		if (lines[line][pixel] != ' ')
		    bmp.SetPixel(x + pixel, y + line, Color.White);
    }

    public int width()
    {
	int maxX = 0;
	for (int line = 0; line < lines.Length; ++line)
	    maxX = Math.Max(maxX, lines[line].Length);

	return maxX;
    }

    public int height()
    {
	return lines.Length;
    }

    protected string[] lines;
}

void createBitmap()
{
    //  create digit dictionary
    Dictionary<char, Digit> digits1 = new Dictionary<char, Digit>()
    {
	{ '.', new Digit(new string[] {
	    " ",
	    " ",
	    " ",
	    " ",
	    "X"
	}) },
	{ '0', new Digit(new string[] {
	    "XXX", 
	    "X X",
	    "X X",
	    "X X",
	    "XXX"
	}) },
	{ '1', new Digit(new string[] {
	    "X",
	    "X",
	    "X",
	    "X",
	    "X"
	}) },
	{ '2', new Digit(new string[] {
	    "XXX",
	    "  X",
	    "XXX",
	    "X  ",
	    "XXX"
	}) },
	{ '3', new Digit(new string[] {
	    "XXX",
	    "  X",
	    "XXX",
	    "  X",
	    "XXX"
	}) },
	{ '4', new Digit(new string[] {
	    "X X",
	    "X X",
	    "XXX",
	    "  X",
	    "  X"
	}) },
	{ '5', new Digit(new string[] {
	    "XXX",
	    "X  ",
	    "XXX",
	    "  X",
	    "XXX"
	}) },
	{ '6', new Digit(new string[] {
	    "XXX",
	    "X  ",
	    "XXX",
	    "X X",
	    "XXX"
	}) },
	{ '7', new Digit(new string[] {
	    "XXX",
	    "  X",
	    "  X",
	    "  X",
	    "  X"
	}) },
	{ '8', new Digit(new string[] {
	    "XXX",
	    "X X",
	    "XXX",
	    "X X",
	    "XXX"
	}) },
	{ '9', new Digit(new string[] {
	    "XXX",
	    "X X",
	    "XXX",
	    "  X",
	    "XXX"
	}) }
    };
    Dictionary<char, Digit> digits2 = new Dictionary<char, Digit>()
    {
	{ '.', new Digit(new string[] {
	    " ",
	    " ",
	    " ",
	    " ",
	    "X"
	}) },
	{ '0', new Digit(new string[] {
	    "XXX",
	    "X X",
	    "X X",
	    "X X",
	    "XXX"
	}) },
	{ '1', new Digit(new string[] {
	    "X",
	    "X",
	    "X",
	    "X",
	    "X"
	}) },
	{ '2', new Digit(new string[] {
	    "XX",
	    " X",
	    "XX",
	    "X ",
	    "XX"
	}) },
	{ '3', new Digit(new string[] {
	    "XX",
	    " X",
	    "XX",
	    " X",
	    "XX"
	}) },
	{ '4', new Digit(new string[] {
	    "X X",
	    "X X",
	    "XXX",
	    "  X",
	    "  X"
	}) },
	{ '5', new Digit(new string[] {
	    "XX",
	    "X ",
	    "XX",
	    " X",
	    "XX"
	}) },
	{ '6', new Digit(new string[] {
	    "XX",
	    "X ",
	    "XX",
	    "XX",
	    "XX"
	}) },
	{ '7', new Digit(new string[] {
	    "XX",
	    " X",
	    " X",
	    " X",
	    " X"
	}) },
	{ '8', new Digit(new string[] {
	    "XXX",
	    "X X",
	    "XXX",
	    "X X",
	    "XXX"
	}) },
	{ '9', new Digit(new string[] {
	    "XX",
	    "XX",
	    "XX",
	    " X",
	    "XX"
	}) }
    };


    //  pi with 10000 digits, ought to be enough
    const string PI = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420198938095257201065485863278865936153381827968230301952035301852968995773622599413891249721775283479131515574857242454150695950829533116861727855889075098381754637464939319255060400927701671139009848824012858361603563707660104710181942955596198946767837449448255379774726847104047534646208046684259069491293313677028989152104752162056966024058038150193511253382430035587640247496473263914199272604269922796782354781636009341721641219924586315030286182974555706749838505494588586926995690927210797509302955321165344987202755960236480665499119881834797753566369807426542527862551818417574672890977772793800081647060016145249192173217214772350141441973568548161361157352552133475741849468438523323907394143334547762416862518983569485562099219222184272550254256887671790494601653466804988627232791786085784383827967976681454100953883786360950680064225125205117392984896084128488626945604241965285022210661186306744278622039194945047123713786960956364371917287467764657573962413890865832645995813390478027590099465764078951269468398352595709825822620522489407726719478268482601476990902640136394437455305068203496252451749399651431429809190659250937221696461515709858387410597885959772975498930161753928468138268683868942774155991855925245953959431049972524680845987273644695848653836736222626099124608051243884390451244136549762780797715691435997700129616089441694868555848406353422072225828488648158456028506016842739452267467678895252138522549954666727823986456596116354886230577456498035593634568174324112515076069479451096596094025228879710893145669136867228748940560101503308617928680920874760917824938589009714909675985261365549781893129784821682998948722658804857564014270477555132379641451523746234364542858444795265867821051141354735739523113427166102135969536231442952484937187110145765403590279934403742007310578539062198387447808478489683321445713868751943506430218453191048481005370614680674919278191197939952061419663428754440643745123718192179998391015919561814675142691239748940907186494231961567945208095146550225231603881930142093762137855956638937787083039069792077346722182562599661501421503068038447734549202605414665925201497442850732518666002132434088190710486331734649651453905796268561005508106658796998163574736384052571459102897064140110971206280439039759515677157700420337869936007230558763176359421873125147120532928191826186125867321579198414848829164470609575270695722091756711672291098169091528017350671274858322287183520935396572512108357915136988209144421006751033467110314126711136990865851639831501970165151168517143765761835155650884909989859982387345528331635507647918535893226185489632132933089857064204675259070915481416549859461637180270981994309924488957571282890592323326097299712084433573265489382391193259746366730583604142813883032038249037589852437441702913276561809377344403070746921120191302033038019762110110044929321516084244485963766983895228684783123552658213144957685726243344189303968642624341077322697802807318915441101044682325271620105265227211166039666557309254711055785376346682065310989652691862056476931257058635662018558100729360659876486117910453348850346113657686753249441668039626579787718556084552965412665408530614344431858676975145661406800700237877659134401712749470420562230538994561314071127000407854733269939081454664645880797270826683063432858785698305235808933065757406795457163775254202114955761581400250126228594130216471550979259230990796547376125517656751357517829666454779174501129961489030463994713296210734043751895735961458901938971311179042978285647503203198691514028708085990480109412147221317947647772622414254854540332157185306142288137585043063321751829798662237172159160771669254748738986654949450114654062843366393790039769265672146385306736096571209180763832716641627488880078692560290228472104031721186082041900042296617119637792133757511495950156604963186294726547364252308177036751590673502350728354056704038674351362222477158915049530984448933309634087807693259939780541934144737744184263129860809988868741326047215695162396586457302163159819319516735381297416772947867242292465436680098067692823828068996400482435403701416314965897940924323789690706977942236250822168895738379862300159377647165122893578601588161755782973523344604281512627203734314653197777416031990665541876397929334419521541341899485444734567383162499341913181480927777103863877343177207545654532207770921201905166096280490926360197598828161332316663652861932668633606273567630354477628035045077723554710585954870279081435624014517180624643626794561275318134078330336254232783944975382437205835311477119926063813346776879695970309833913077109870408591337464144282277263465947047458784778720192771528073176790770715721344473060570073349243693113835049316312840425121925651798069411352801314701304781643788518529092854520116583934196562134914341595625865865570552690496520985803385072242648293972858478316305777756068887644624824685792603953527734803048029005876075825104747091643961362676044925627420420832085661190625454337213153595845068772460290161876679524061634252257719542916299193064553779914037340432875262888963995879475729174642635745525407909145135711136941091193932519107602082520261879853188770584297259167781314969900901921169717372784768472686084900337702424291651300500516832336435038951702989392233451722013812806965011784408745196012122859937162313017114448464090389064495444006198690754851602632750529834918740786680881833851022833450850486082503930213321971551843063545500766828294930413776552793975175461395398468339363830474611996653858153842056853386218672523340283087112328278921250771262946322956398989893582116745627010218356462201349671518819097303811980049734072396103685406643193950979019069963955245300545058068550195673022921913933918568034490398205955100226353536192041994745538593810234395544959778377902374216172711172364343543947822181852862408514006660443325888569867054315470696574745855033232334210730154594051655379068662733379958511562578432298827372319898757141595781119635833005940873068121602876496286744604774649159950549737425626901049037781986835938146574126804925648798556145372347867330390468838343634655379498641927056387293174872332083760112302991136793862708943879936201629515413371424892830722012690147546684765357616477379467520049075715552781965362132392640616013635815590742202020318727760527721900556148425551879253034351398442532234157623361064250639049750086562710953591946589751413103482276930624743536325691607815478181152843667957061108615331504452127473924544945423682886061340841486377670096120715124914043027253860764823634143346235189757664521641376796903149501910857598442391986291642193994907236234646844117394032659184044378051333894525742399508296591228508555821572503107125701266830240292952522011872676756220415420516184163484756516999811614101002996078386909291603028840026910414079288621507842451670908700069928212066041837180653556725253256753286129104248776182582976515795984703562226293486003415872298053498965022629174878820273420922224533985626476691490556284250391275771028402799806636582548892648802545661017296702664076559042909945681506526530537182941270336931378517860904070866711496558343434769338578171138645587367812301458768712660348913909562009939361031029161615288138437909904231747336394804575931493140529763475748119356709110137751721008031559024853090669203767192203322909433467685142214477379393751703443661991040337511173547191855046449026365512816228824462575916333039107225383742182140883508657391771509682887478265699599574490661758344137522397096834080053559849175417381883999446974867626551658276584835884531427756879002909517028352971634456212964043523117600665101241200659755851276178583829204197484423608007193045761893234922927965019875187212726750798125547095890455635792122103334669749923563025494780249011419521238281530911407907386025152274299581807247162591668545133312394804947079119153267343028244186041426363954800044800267049624820179289647669758318327131425170296923488962766844032326092752496035799646925650493681836090032380929345958897069536534940603402166544375589004563288225054525564056448246515187547119621844396582533754388569094113031509526179378002974120766514793942590298969594699556576121865619673378623625612521632086286922210327488921865436480229678070576561514463204692790682120738837781423356282360896320806822246801224826117718589638140918390367367222088832151375560037279839400415297002878307667094447456013455641725437090697939612257142989467154357846878861444581231459357198492252847160504922124247014121478057345510500801908699603302763478708108175450119307141223390866393833952942578690507643100638351983438934159613185434754649556978103829309716465143840700707360411237359984345225161050702705623526601276484830840761183013052793205427462865403603674532865105706587488225698157936789766974220575059683440869735020141020672358502007245225632651341055924019027421624843914035998953539459094407046912091409387001264560016237428802109276457931065792295524988727584610126483699989225695968815920560010165525637567";
    const int BITMAP_WIDTH = 400;
    const int BITMAP_HEIGHT = 240;
    const int MARGIN_HORIZ = 0;
    const int MARGIN_VERT = 0;
    const int SPACING = 1;
    int digitsPainted = 0;
    using (Bitmap bm = new Bitmap(BITMAP_WIDTH, BITMAP_HEIGHT, System.Drawing.Imaging.PixelFormat.Format32bppRgb))
    using (Graphics g = Graphics.FromImage(bm))
    using (SolidBrush bkBrush = new SolidBrush(Color.Black))
    {
	g.FillRectangle(bkBrush, 0, 0, BITMAP_WIDTH, BITMAP_HEIGHT);

	//  current cursor pos
	int x = MARGIN_HORIZ;
	int y = MARGIN_VERT;
	int dy = 6;

	foreach(char c in PI)
	{
	    Digit d = digits2[c];    //  next digit
	    int w = d.width();
	    int h = d.height();
	    if (x + w <= BITMAP_WIDTH - MARGIN_HORIZ)
	    {
		d.paint(bm, x, y);
		x += w + SPACING;
	    }
	    else
	    {
		//  new line
		y += d.height() + SPACING;
		x = MARGIN_HORIZ;
		if (y >= BITMAP_HEIGHT)
		    break;  //  we're done
		d.paint(bm, x, y);
		x += w + SPACING;
	    }

	    ++digitsPainted;
	}

	bm.Save("pi.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
    }
}
/Rudi

DM-42 (s/n 06999), HP-42S, HP-35s, HP-11c, HP-32SII (ex HP-41CV, ex HP-75C, ex HP-48G + a lot, really lot of a accessories)
Denmark
Thomas Okken
Posts: 1100
Joined: Tue May 02, 2017 5:48 pm
Location: Netherlands
Contact:

Re: More PI

Post by Thomas Okken »

rudi wrote:
Mon Apr 25, 2022 8:46 am
(Digits must be in base 10)
Awww!

I was going to say, since there are 96000 pixels to work with... 96000 bits is equivalent to 28898 decimal digits!
User avatar
rudi
Posts: 415
Joined: Wed Nov 03, 2021 9:03 am
Location: Denmark
Contact:

Re: More PI

Post by rudi »

Thomas Okken wrote:
Mon Apr 25, 2022 11:56 am
rudi wrote:
Mon Apr 25, 2022 8:46 am
(Digits must be in base 10)
Awww!

I was going to say, since there are 96000 pixels to work with... 96000 bits is equivalent to 28898 decimal digits!
Hmmm... It's been a while since I converted decimal numbers to binary numbers. How did you come up with 28898 decimal points exactly?
How many bits did you reserve to exponent and sign?
/Rudi

DM-42 (s/n 06999), HP-42S, HP-35s, HP-11c, HP-32SII (ex HP-41CV, ex HP-75C, ex HP-48G + a lot, really lot of a accessories)
Denmark
Thomas Okken
Posts: 1100
Joined: Tue May 02, 2017 5:48 pm
Location: Netherlands
Contact:

Re: More PI

Post by Thomas Okken »

The number of bits in a decimal digit is log(10)/log(2).
Or, another, and equivalent, way of looking at it: 2^96000=10^(96000*log10(2))=10^28898.87958...
User avatar
rudi
Posts: 415
Joined: Wed Nov 03, 2021 9:03 am
Location: Denmark
Contact:

Re: More PI

Post by rudi »

Ah - yes off course.
But I still think my last image is the most compact human readable, possibly requiring magnifying glasses ;-)

Until I see a better one ;-)
/Rudi

DM-42 (s/n 06999), HP-42S, HP-35s, HP-11c, HP-32SII (ex HP-41CV, ex HP-75C, ex HP-48G + a lot, really lot of a accessories)
Denmark
Post Reply