Flutuante duplo vs no iPhone

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.