forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   MidletPascal (http://forum.boolean.name/forumdisplay.php?f=46)
-   -   Список телефонов, совместимых с floating-point МидлетПаскаля (http://forum.boolean.name/showthread.php?t=8581)

Bruteo 30.06.2009 06:45

Список телефонов, совместимых с floating-point МидлетПаскаля
 
Вложений: 1
Мидлет для проверки совместимости телефона в приложении к посту!

Думаю, некоторым форумчанам известно, что не на всех телефонах правильно работают приложения из MidletPascal, в которых используется floating-point (в русской версии мидлетпаскаля - в конфигурации сборки "Погрешность: до 0.000001"). На некоторых моделях телефонов расчёты с использованием чисел с плавающей точкой проводятся неправильно, и приходится использовать fixed-point (в русской версии мидлетпаскаля - в конфигурации сборки "Погрешность: до 0.0001") при сборке проекта.
Мной было установлено, что эти ошибки не постоянны, а возникают далеко не при каждом расчёте. Это может сильно подпортить настроение разработчикам, которые не знают об этой проблеме, но пытаются найти где же ошибка в их приложении.

Я предлагаю совместно составить список телефонов, на которых проявляется эта проблема или, наоборот, не проявляется. Для отнесения телефона к совместимым или несовместимым я написал простое приложение, которое сообщит, могут ли мидлеты с floating-point работать на вашем телефоне. Вам нужно просто установить мидлет, запустить, а потом отписаться в этой теме, сообщив результат теста и модель телефона.

После чего в первом сообщении в теме все данные будут оседать в упорядоченном виде. Мной уже был составлен небольшой список, от него и будем отталкиваться ;)

Модели телефонов, на которых ПРАВИЛЬНО работают мидлеты с floating-point (в русской версии мидлетпаскаля - в конфигурации сборки "Погрешность: до 0.000001")

Nokia E70; Nokia E61; Nokia E61i; Nokia 6125; Nokia 5800; предположительно, все модели Nokia, выпущенные в 2006 году и позже

Модели телефонов, на которых НЕ работают мидлеты с floating-point("Погрешность: до 0.000001") и нужно использовать fixed-point("Погрешность: до 0.0001")

Nokia 7710; Nokia 6681; Nokia 6630; Nokia 6600; Nokia 3230; Siemens SL75, Siemens ME75

Мидлет для проверки совместимости телефона в приложении к посту!

Исходный код приложенного мидлета. Внимание! Собирать мидлет нужно, выбрав в конфигурации сборки floating-point("Погрешность: до 0.000001"). Иначе - толку от проверки не будет - все телефоны будут совместимы. В код программы я внёс проверку на правильность сборки мидлета, так что не удивляйтесь ;)
Код:

Program mp_float_test;

var
cont,exitCmd,clicked:command;
label_id,i:integer;
text:string;
good_compile:boolean;

Begin
    clearform;
    exitCmd := createCommand('Выход', CM_EXIT, 2);
    addCommand(exitCmd);
    if Length(''+asin(1))<10 then
    begin
        good_compile:=false;
        label_id := formAddString('Вы запустили неправильно собранный мидлет. При сборке в конфигурации нужно выбрать floating-point(Погрешность: до 0.000001).');
    end;
    else
    begin
        good_compile:=true;
        label_id := formAddString('Сейчас начнется тестирование телефона на совместимость с floating-point в мидлетах MidletPascal.');
        cont := createCommand('Начать тест', CM_OK, 1);
        addCommand(cont);
    end;
    showForm;
   
    repeat
        delay(50);
        clicked:=getClickedCommand;
    until clicked <> emptyCommand;
    if (clicked = exitCmd) or (not good_compile) then halt;
   
    clearform;
    text:='Ура! Ваш телефон совместим с floating-point! Пожалуйста, сообщите об этом на форуме boolean.name, указав модель.';
    i:=1;
   
    repeat
        i:=i+1;
        if (copy(''+exp(1),0,6)<>'2.7182') or
            (copy(''+sin(0.78539816),0,6)<>'0.7071') or
              (copy(''+pow(3.5,7),0,6)<>'6433.9') or
            (copy(''+log(25),0,6)<>'3.2188') then
                        text:='К сожалению, ваш телефон НЕсовместим с floating-point! Пожалуйста, сообщите об этом на форуме boolean.name, указав модель.';
    until i<11;
   
    exitCmd := createCommand('Выход', CM_EXIT, 2);
    addCommand(exitCmd);
    label_id := formAddString(text);
   
    repeat
        delay(50);
        clicked:=getClickedCommand;
    until clicked <> emptyCommand;
End.


12121 30.06.2009 10:44

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Nokia N73ME совместим

odd 01.07.2009 17:25

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Siemens C75 несовместим. Точно помню, сколько я на нем с синусами и косинусами промучался. Выскакивали какие-то совершенно неожиданные глюки.

Tronix 27.07.2009 16:14

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Цитата:

Сообщение от odd (Сообщение 109572)
Siemens C75 несовместим. Точно помню, сколько я на нем с синусами и косинусами промучался. Выскакивали какие-то совершенно неожиданные глюки.

Siemens C75 - Ура, ваш телефон совместим бла бла бла. Прошивка v24.
Но хз конечно, может быть просто в этой программе все нормально, а как там на самом деле при реальных задачах - трудно сказа

odd 27.07.2009 19:03

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Хороший тест, это вот такой трехмерный кубик.
В идеале на экране должен вращаться кубик.
Если floating point вычисления глючат, то будет рисоваться
какая-то какофония из линий.

PHP код:

Program Project_3D_cube_2;

Uses    gfx;

Const
        
vortex 6// Количество граней -1
        
points 11// Количество точек -1

Type point record    // Тип данных для хранения точки или подобной бурды
    
xyzreal;
end;
        
Var    
andx1dy1dx2dy2real;
        
p: array [0..pointsof point// Тут хранятся все точки
        
e: array [0..vortex0..3of integer// А тут все грани
        
iwihixiyiinteger;
        
tempanglepoint;

Procedure RotZ;
var    
t,arreal;
begin
    t
:=sqrt(temp.x*temp.x+temp.y*temp.y);
        
ar:=atan2(temp.y,temp.x)+an;
        
temp.x:=t*cos(ar); temp.y:=t*sin(ar);
end;

Procedure RotY;
var    
t,arreal;
begin
    t
:=sqrt(temp.x*temp.x+temp.z*temp.z);
        
ar:=atan2(temp.z,temp.x)+an;
        
temp.x:=t*cos(ar); temp.z:=t*sin(ar);
end;

Procedure RotX;
var    
t,arreal;
begin
    t
:=sqrt(temp.x*temp.x+temp.y*temp.y);
        
ar:=atan2(temp.y,temp.x)+an;
        
temp.x:=t*cos(ar); temp.y:=t*sin(ar);
end;

Procedure Show;
var
    
yesinteger;
begin
    
for i:=0 to vortex do
    
begin
    dx1
:=p[e[i,1]].x-p[e[i,0]].xdy1:=p[e[i,1]].y-p[e[i,0]].y;
    
dx2:=p[e[i,2]].x-p[e[i,1]].xdy2:=p[e[i,2]].y-p[e[i,1]].y;
    if (
dx1*dy2-dx2*dy1<0then
        begin
        DrawLine
(trunc(p[e[i,0]].x+wi/2), trunc(p[e[i,0]].y+hi/2), trunc(p[e[i,1]].x+wi/2), trunc(p[e[i,1]].y+hi/2));
        
DrawLine(trunc(p[e[i,1]].x+wi/2), trunc(p[e[i,1]].y+hi/2), trunc(p[e[i,2]].x+wi/2), trunc(p[e[i,2]].y+hi/2));
        
DrawLine(trunc(p[e[i,2]].x+wi/2), trunc(p[e[i,2]].y+hi/2), trunc(p[e[i,3]].x+wi/2), trunc(p[e[i,3]].y+hi/2));
        
DrawLine(trunc(p[e[i,3]].x+wi/2), trunc(p[e[i,3]].y+hi/2), trunc(p[e[i,0]].x+wi/2), trunc(p[e[i,0]].y+hi/2));
    
end;
    
end;
end;

Begin
    an
:=0.017;
    
p[0].x:=30p[0].y:=30p[0].z:=30;            // Сама фигура (в оригинале - куб)
    
p[1].x:=30p[1].y:=-30p[1].z:=30;
    
p[2].x:=-30p[2].y:=-30p[2].z:=30;
    
p[3].x:=-30p[3].y:=30p[3].z:=30;
    
p[4].x:=30p[4].y:=30p[4].z:=-30;
    
p[5].x:=30p[5].y:=-30p[5].z:=-30;
    
p[6].x:=-30p[6].y:=-30p[6].z:=-30;
    
p[7].x:=-30p[7].y:=30p[7].z:=-30;

    
p[8].x:=20p[8].y:=20p[8].z:=30;                // Дырка
    
p[9].x:=20p[9].y:=-20p[9].z:=30;
    
p[10].x:=-20p[10].y:=-20p[10].z:=30;
    
p[11].x:=-20p[11].y:=20p[11].z:=30;
    
    
e[0,0]:=0e[0,1]:=1e[0,2]:=2e[0,3]:=3;            // ВАЖНО: Все точки в грани нужно описывать по ходу часовой стрелки!
    
e[1,0]:=1e[1,1]:=5e[1,2]:=6e[1,3]:=2;
    
e[2,0]:=5e[2,1]:=4e[2,2]:=7e[2,3]:=6;
    
e[3,0]:=4e[3,1]:=0e[3,2]:=3e[3,3]:=7;
    
e[4,0]:=4e[4,1]:=5e[4,2]:=1e[4,3]:=0;
    
e[5,0]:=3e[5,1]:=2e[5,2]:=6e[5,3]:=7;
    
    
e[6,0]:=8e[6,1]:=9e[6,2]:=10e[6,3]:=11;        // Описание дырки
    
    
wi:=GetWidthhi:=GetHeight;
    
    
angle.x:=1*0.017;
    
angle.y:=2*0.017;
    
angle.z:=1*0.017;
    
    
repeat
    
for i:=0 to points do
        
begin
            temp
.x:=p[i].xtemp.y:=p[i].ytemp.z:=p[i].z;
            
an:=angle.x;
            
RotX;
            
an:=angle.y;
            
RotY;
            
an:=angle.z;
            
RotZ;
            
p[i].x:=temp.xp[i].y:=temp.yp[i].z:=temp.z;
        
end;
        
SetColor(0,0,0); FillRect(0,0,wi,hi); SetColor(0,255,0);
        
ShowRepaint;
    
until FALSE;
End


GRAY_WOLF 01.08.2009 01:07

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Цитата:

Хороший тест, это вот такой трехмерный кубик.
В идеале на экране должен вращаться кубик.
Если floating point вычисления глючат, то будет рисоваться
какая-то какофония из линий.
Если правильно выставить floating point до 0,000001 в проекте то будет про рисовываться куб, иначе ерись. Проверял на KEmulatore и N7390.

Bruteo 25.10.2009 21:50

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Цитата:

Сообщение от Tronix (Сообщение 111992)
Siemens C75 - Ура, ваш телефон совместим бла бла бла. Прошивка v24.
Но хз конечно, может быть просто в этой программе все нормально, а как там на самом деле при реальных задачах - трудно сказа

Мой опыт показывает, что если телефон не заваливается на нескольких прогонах простых тестов (что и реализовано в приложении из первого поста) - то он не заваливается, вообще.
Мой опыт: приложение fncalc, протестированное на многих телефонах.
http://frolov.net/fncalc/

Опять же, я наблюдал, что при единичном прогоне вычислений из тестового приложения - некоторые кривые ява машины таки давали верный результат. Поэтому в тестовом приложении тест загнан в цикл на 10 повторов.
Было бы, конечно, здорово разобраться в природе этой ошибки и исправить. Моё копание в исходниках компилятора не дало результатов. Нужно глубже понимать принципы построения и выполнения байткода, видимо =)

GanGSISoft 26.10.2009 15:29

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Sony Ericsson K800 (прошивка: R8BF003 версия java машины 7.7).
Тест прошел удачно (при помощи программы из первого поста).

Bruteo 27.10.2009 15:20

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Собранная мной информация по совместимым телефонам ещё:
SonyEricsson K610i, K770i, K810i, C902, W760a, W910i, K320i, W580i, W760i, K850i, K660i, G700, K850i, W800i, Z710i, K550i... огромное количество других сонериков, не буду перечислять);
LG KP500; LG KM900;
SAMSUNG SGH-U800; SAMSUNG SGH-U600; SAMSUNG SGH-i450; SAMSUNG S5230; SAMSUNG SGH-J700;
HTC Touch Viva


Вообще, складывается ощущение, что проблемы только на большинстве сименсов и на старых нокиях(2005 год и старше). Если кто-то может опровергнуть это предположение - пишите =)

Arton 13.12.2009 14:58

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Все работает, Siemens S75 прошивка 47-я.

baton4ik 16.12.2009 19:24

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
sony ericsson w300i работает! поддерживает :P

scorey 17.12.2009 22:12

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
моторола л9 совместим с плавающей точкой

Arton 26.01.2010 23:42

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Цитата:

Сообщение от Arton (Сообщение 129443)
Все работает, Siemens S75 прошивка 47-я.

Наврал я :mad: не работает на моём сименсе, сейчас перепроверил.

Ksanatos 03.02.2010 14:44

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
W760i работает отлично (ПО: 1202-3592 R3CA037 080713 Sony Ericson)

Tronix 03.02.2010 14:59

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Цитата:

Сообщение от Arton (Сообщение 134872)
Наврал я :mad: не работает на моём сименсе, сейчас перепроверил.

Подтверждаю, на S75 куб от Odd'а превращается в хаотичные линии, хотя первый тест проходит. С другой стороны хорошим тоном считается избавление от floating-point в алгоритмах. Тот же куб можно легко сделать на целочисленных переменных. Я гарантирую это.

odd 03.02.2010 16:20

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Ну да, всегда можно умножить число скажем на 10000 и оперировать им как целым, а потом перед рисованием назад разделить его на 10000 и всё будет нормально.

veila 13.05.2010 22:56

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
У меня Motorola W510. И тест из первого поста, и кубик пройдены успешно :)

NetBuilding 08.06.2010 18:28

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
BenQ-Siemens E71 неработает с floating-point

psih1 14.06.2010 19:06

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Nokia 5230 совместен

odd 18.06.2010 19:27

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Samsung GT S5230 полет нормальный. Совместимость полная.

cHeRsAnYa 18.06.2010 21:29

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
SonyEricsson K300i, K660i - совместимы, как и следовало ожидать. Думаю, все SE с midp-2.0 совместимы. :) Siemens A65, Samsung X620 - не совместимы, что тоже было предсказуемо )))

Xao 19.06.2010 18:16

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
LG KP320 - совместим

**удивительно...

IDOL 1234 23.08.2010 03:07

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
)) siemens a65 можно было и не тестить
долбанутый nokia2710nav, оказывается, хоть с чем-то совместим.

Reks888 23.08.2010 12:28

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
SE k550i совместим... Что уже доказал товарищчь cHeRsAnYa

fall 08.12.2010 15:46

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Nokia 6303i - тест с кубиком не пройден.

RegIon 02.01.2011 12:20

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Моя мобила совместима с Floating-point:lg gx200
Цитата:

Хороший тест, это вот такой трехмерный кубик.
В идеале на экране должен вращаться кубик.
Если floating point вычисления глючат, то будет рисоваться
какая-то какофония из линий.
а скомпилировать.

im_zorg 04.01.2011 20:00

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Nokia 5130 XpressMusic Оба теста на ура

AVL 28.01.2011 12:23

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
А где в MP 3.2 устанавливается погрешность?

RegIon 28.01.2011 13:22

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Нигде, так ж как и настроики. качай второй

DUDAKOV.RU 12.02.2011 14:46

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
КИТАЙСКИЙ СМАРТФОН.ПО ПРОШИВКЕ ОПРЕДЕЛЯЕТСЯ КАК SE W800I,А ПРОДАЕТСЯ КАК SE C5000.ТЕСТЫ ОК.

romby 20.11.2011 22:45

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Кто-нибудь проверял телефоны Philips и Fly?

bormotan 10.12.2011 22:58

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
второй тест "gfx" - это что и где его добыть ????


удивлен , но мое простейшее Nokia 2330 classic-создание пошло второй тест !!!!! показало мне кубик . а первый тест выдал ошибку . какую-то фигню вынаписали в первом тесте , батеньки-программеры

Amigo888 09.01.2012 21:08

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Тестирую все телефоны которые имеются:
Nokia 5230 Nokia 3250 Sony Ericsson k510i Nokia 5130 все тесты на отлично

RblSb 09.08.2014 19:02

Ответ: Список телефонов, совместимых с floating-point МидлетПаскаля
 
Цитата:

Сообщение от odd (Сообщение 135826)
Ну да, всегда можно умножить число скажем на 10000 и оперировать им как целым, а потом перед рисованием назад разделить его на 10000 и всё будет нормально.

эх, если бы еще арк-функции при таком раскладе работали в режиме fixed :''((
или была бы хоть какая-то альтернатива atan2


Часовой пояс GMT +4, время: 18:39.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot