Acabei de ouvir que o iphone não pode fazer o dobro nativamente, tornando-os muito mais lento que o float regular.
Isso é verdade? Evidencia?
Estou muito interessado no assunto porque meu programa precisa de cálculos de alta precisão e terei que comprometer a velocidade.
O iPhone pode fazer aritmética de precisão simples e dupla em hardware. No 1176 (iPhone original e iPhone3G), eles operam aproximadamente na mesma velocidade, embora você possa ajustar mais dados de precisão única nos caches. No Cortex-A8 (iPhone3GS, iPhone4 e iPad), a aritmética de precisão simples é feita na unidade NEON em vez de no VFP, e é substancialmente mais rápida.
Certifique-se de desligar o modo miniatura nas configurações de compilation para o armv6, se estiver fazendo um cálculo intensivo de ponto flutuante.
Esta apresentação de slides fornece informações sobre por que não há um bom ponto flutuante e por que existe (a unidade de ponto flutuante de vetor). Aparentemente, é importante verificar o “modo de polegar” que influencia se o suporte de ponto flutuante está ativado. Isso nem sempre é uma melhoria. Mostra como encontrar as instruções corretas no código da assembly.
Também depende de qual versão do telefone você deseja executar seu código. O mais recente parece “mais capaz” em fazer matemática de ponto flutuante.
EDIT: aqui está uma leitura interessante sobre otimizações de ponto flutuante no ARM com VFP e NEON SSE.
O manual do ARM1176JZF-S diz que suporta números de ponto flutuante de precisão dupla. Você deve estar em boa forma. Aqui está um link para a documentação em PDF. IPhones posteriores são chips Cortex e certamente não devem ser menos capazes.