20130316, 05:42  #1 
6809 > 6502
"""""""""""""""""""
Aug 2003
101×103 Posts
8,597 Posts 
Android app recommendations
Got myself an android tablet. Looking to find some good apps. Especially a nice calculator app. What are your faves?

20130316, 13:07  #3 
Account Deleted
"Tim Sorbera"
Aug 2006
San Antonio, TX USA
10AB_{16} Posts 
250+ Solitaire Collection and Sudoku Free are good simple puzzlers, if you like that sort of thing.

20130317, 07:27  #4 
Romulan Interpreter
Jun 2011
Thailand
2220_{16} Posts 
iBeer!
the best android app, no questions... (what is not shown in the advertizing is the best part, when the guy is burping, and when you drop the phone on the table and break the mug, some friend was really scared that he broke the touchscreen, haha) Last fiddled with by LaurV on 20130317 at 07:30 
20200822, 11:58  #5 
Aug 2020
1_{2} Posts 
I prefer Google Calculator but here are some other great options:[MOD: Spam link removed from firsttime poster anyone can search calculator apps themselves].
Google Maps, Google wallpaper, Sygic, Reddit are also musthave on my device Last fiddled with by VBCurtis on 20200822 at 23:49 
20200822, 22:41  #6 
∂^{2}ω=0
Sep 2002
República de California
2·13·443 Posts 
As is wellknown hereabouts, the only smartphones I have ever owned are some crackedscreen Android ones I installed a Linuxenvironment freeware app on in order to run my Mlucas code. Said Linux distro of course includes Linux bc, which one can use as a textbased calculator app ... pretty basic, decimalmath based so noticeably slow once operands get beyond a few hundred digits in length ... but allows one to write one's own code to add functionality as needed and do cool stuff. For example, below is a sample of code I simply paste into an integermode bc run (floatingpointemulation mode needs 'bc l' and possibly fiddling of the 'scale' setting) to give me some useful basic numbertheory functionality. Never used an Android tablet, though, and anyway, as you can see I'm either a weirdo or a Luddite when it comes to apptech. :)
Code:
define abs(n) { if(n < 0) return(n); return(n); } define trailz(n) { auto ssave, i; i = 0; while(n && !(n%2)) { i += 1; n /= 2; } /* Bizarre: (n%2 == 0) didn't work here */ return(i); } define bits(n) { auto ssave, r; ssave = scale; scale = 0; /* In case we're in floatingpoint mode */ r = length(n)*3321928095/1000000000; while ( 2^r > n ) { r = 1; } scale = ssave; return(r+1); } define reverse(n,nbits) { auto ssave, tmp; ssave = scale; scale = 0; /* In case we're in floatingpoint mode */ tmp = 0; while(nbits) { tmp = 2*tmp + (n % 2); n /= 2; nbits = 1; } scale = ssave; return(tmp); } /* If the input == 2^p, return lg(n), otherwise return 1. Note: We do not consider 0 as being a power of 2, since there is no number x such that 2^x = 0. No special casing is needed for 0, since bits(0) = trailz(0) = 0. */ define ispow2(n) { auto bt, tz; bt = bits(n); tz = trailz(n); if(bt == tz+1) return(tz); return(1); } /* lefttoright binary modpow, a^b (mod n); note that special 'fast' version which assumes user knows what he is doing and eschews input cornercase checking was not faster for me in practice: */ define modpow_lr(a,b,n) { auto ssave, y,len; ssave = scale; scale = 0; /* In case we're in floatingpoint mode */ /* For n = 0, trigger a divby0 error; for n = +1 return 0: */ if(abs(n) < 2) { scale = ssave; return 2%n; } /* For b = 0, return 1; for b < 0, return 0: */ if(b <= 0) { scale = ssave; return(b==0); } /* For a = 0, return 0; for a = +1 return a^(b%2): */ if(abs(a) < 2) { scale = ssave; return (a!=0) * a^(b%2); } len = bits(b); b = reverse(b,len); /*print "modpow_lr: n = ",n,", #bits = ",len,", reverse = ",b,"\n";*/ y = a%n; b /= 2; while(len) { y = (y*y)%n; if(b%2) y = (a*y)%n; /*print "len = ",len,", bit = ",b%2,": y = ",y,"\n";*/ b /= 2; } scale = ssave; return(y); } /* righttolefttoright binary modpow, a^b (mod n): */ define modpow_rl(a,b,n) { auto ssave, y,z; ssave = scale; scale = 0; /* In case we're in floatingpoint mode */ /* For n = 0, trigger a divby0 error; for n = +1 return 0: */ if(abs(n) < 2) { scale = ssave; return 2%n; } /* For b = 0, return 1; for b < 0, return 0: */ if(b <= 0) { scale = ssave; return(b==0); } /* For a = 0, return 0; for a = +1 return a^(b%2): */ if(abs(a) < 2) { scale = ssave; return (a!=0) * a^(b%2); } y = 1; z = a%n; while(b) { if(b%2) y = (y*z)%n; z = (z*z)%n; b /= 2; } scale = ssave; return(y); } /* base2 specialized version of modpow_lr, computes 2^b (mod n): */ define modpow_lr2(b,n) { auto ssave, i,y,len; ssave = scale; scale = 0; /* In case we're in floatingpoint mode */ len = bits(b); i = len; while(i) { bmap[i] = (b%2); b /= 2; } y = 2; i = 1; /* No need to mod until y >= n: */ while(i < len) { y = (y*y); if(bmap[i++]) { y += y; } if(y >= n) break; } y = y%n; while(i < len) { y = (y*y)%n; if(bmap[i++]) { y += y; if(y >= n) y = n; } } scale = ssave; return(y); } /* Singlemodpow timing test: p = 3217; n = 2^p1; modpow_lr2(n1,n) */ /* returns 1 if p is a basez Fermat pseudoprime, 0 otherwise. */ define pprimef(p,base) { y = modpow_lr(base,p1,p); return(y==1); } define isprp(p) { auto ssave; ssave = scale; scale = 0; /* In case we're in floatingpoint mode */ if(p == 2) { scale = ssave; return(1); } if(!(p%2)) { scale = ssave; return(0); } /* Must only use inputs > the largest pprimefbase used below ... better, use that 341 is the smallest base2 Fermatpseudoprime: */ if(p < 341) { scale = ssave; return(pprimef(p,2)); } scale = ssave; return(pprimef(p,2) && pprimef(p,3) && pprimef(p,5) && pprimef(p,7) && pprimef(p,11) && pprimef(p,13)); } define find_next_prp(n,up_or_down) { auto i,j,d; /* direction properly specified? */ if(abs(up_or_down) != 1) { print "Direction of search not properly specified, must = +1 (up) or 1 (down).\n"; return(0); } d = 2*up_or_down; /* n must be odd: */ if(!(n%2)) { n = up_or_down; print "Made n odd, starting search with: ",n,"...\n"; } i = 0; j = 0; while(1) { n += d; i += 1; if(pprimef(n,2)) { j += 1; if(isprp(n)) { print "[",i," odds tried, ",j," of which were 2PRPs] Found next PRP: ",n,"\n"; return(n); } } } } define gcd(x,y) { auto ssave, q, f; ssave = scale; scale = 0; /* In case we're in floatingpoint mode */ if(!y) { scale = ssave; return(x); } while(y) { q = x/y; /* Find quotient of current x/y and round toward zero: */ f = x  q*y;/* Find y' and store in temporary: */ x = y; /* Find x', i.e. move the old value of y into the slots for x: */ y = f; /* New value of y: */ } scale = ssave; return(x); } 
20200823, 09:57  #7 
"Composite as Heck"
Oct 2017
3×11×19 Posts 
F Droid is a must, it's a repo for FOSS apps ( https://en.wikipedia.org/wiki/FDroid ). Shattered Pixel Dungeon is a roguelike that works well with a touch screen. There are various ssh and terminal emulators to interact with your tablet in a Linuxy way.

20200826, 21:35  #8 
"/X\(‘‘)/X\"
Jan 2013
2^{3}·3·7·17 Posts 

20200827, 08:46  #9  
"Oliver"
Sep 2017
Porta Westfalica, DE
293_{10} Posts 
Quote:
It is really nice that this paid version has a lot of the features you would only get for some monthly subscription on the website, so I use it rather often. Also, the extended keyboard with a lot of mathematical symbols is handy on a "Handy". 

20200909, 12:04  #10 
"Carlos Pinho"
Oct 2011
Milton Keynes, UK
2·3·5·157 Posts 
Hope I can use this thread to ask for a good iPhone spam call blocker.

Thread Tools  
Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
GMPECM for Android  yoyo  GMPECM  6  20160119 20:04 
need recommendations for a PC  ixfd64  Hardware  45  20121114 01:19 
Hardware recommendations  Mr. Odd  Factoring  12  20111119 00:32 
Android  henryzz  Lounge  7  20110119 18:21 
Recommendations (courses)  blob100  Other Mathematical Topics  20  20100620 18:11 