Hello community,

here is the log from the commit of package step for openSUSE:Factory checked in 
at 2016-01-10 13:06:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/step (Old)
 and      /work/SRC/openSUSE:Factory/.step.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "step"

Changes:
--------
--- /work/SRC/openSUSE:Factory/step/step.changes        2015-11-15 
12:44:19.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.step.new/step.changes   2016-01-10 
13:07:21.000000000 +0100
@@ -1,0 +2,9 @@
+Sun Dec 13 13:34:23 UTC 2015 - tittiatc...@gmail.com
+
+- Update to KDE Applications 15.12.0
+   * KDE Applications 15.12.0 
+   * https://www.kde.org/announcements/announce-applications-15.12.0.php
+   * boo#958887
+
+
+-------------------------------------------------------------------

Old:
----
  step-15.08.3.tar.xz

New:
----
  step-15.12.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ step.spec ++++++
--- /var/tmp/diff_new_pack.iR0z8M/_old  2016-01-10 13:07:23.000000000 +0100
+++ /var/tmp/diff_new_pack.iR0z8M/_new  2016-01-10 13:07:23.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           step
-Version:        15.08.3
+Version:        15.12.0
 Release:        0
 Summary:        An interactive physics simulator
 License:        GPL-2.0+

++++++ step-15.08.3.tar.xz -> step-15.12.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/CMakeLists.txt 
new/step-15.12.0/CMakeLists.txt
--- old/step-15.08.3/CMakeLists.txt     2015-11-04 19:37:34.000000000 +0100
+++ new/step-15.12.0/CMakeLists.txt     2015-11-04 15:29:54.000000000 +0100
@@ -68,7 +68,6 @@
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter")
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${EIGEN3_INCLUDE_DIR})
-add_definitions(-DEIGEN2_SUPPORT_STAGE40_FULL_EIGEN3_STRICTNESS) #TODO port 
away from Eigen2-compatability mode
 
 add_subdirectory(doc)
 add_subdirectory(stepcore)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/autotests/CMakeLists.txt 
new/step-15.12.0/autotests/CMakeLists.txt
--- old/step-15.08.3/autotests/CMakeLists.txt   2015-11-04 19:37:34.000000000 
+0100
+++ new/step-15.12.0/autotests/CMakeLists.txt   2015-11-04 15:29:54.000000000 
+0100
@@ -1,4 +1,4 @@
-# Copyright 2014  Andreas Cord-Landwehr <cordlandw...@kde.org>
+# Copyright 2014-2015  Andreas Cord-Landwehr <cordlandw...@kde.org>
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions
@@ -50,5 +50,6 @@
 stepcore_unit_tests(
     test_contacts
     test_metaobject
+    test_forces
 #     test_worldcopy #FIXME must be reenabled after sorting out derivation 
issues
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/autotests/test_forces.cc 
new/step-15.12.0/autotests/test_forces.cc
--- old/step-15.08.3/autotests/test_forces.cc   1970-01-01 01:00:00.000000000 
+0100
+++ new/step-15.12.0/autotests/test_forces.cc   2015-11-04 15:29:54.000000000 
+0100
@@ -0,0 +1,102 @@
+/*
+ *  Copyright 2015  Andreas Cord-Landwehr <cordlandw...@kde.org>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) version 3, or any
+ *  later version accepted by the membership of KDE e.V. (or its
+ *  successor approved by the membership of KDE e.V.), which shall
+ *  act as a proxy defined in Section 6 of version 3 of the license.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library.  If not, see 
<http://www.gnu.org/licenses/>.
+ */
+
+#include "test_forces.h"
+#include "gravitation.h"
+#include "rigidbody.h"
+#include "particle.h"
+#include "vector.h"
+#include <QDebug>
+
+using namespace StepCore;
+
+void TestForces::testGravitationalForce()
+{
+    // setup world
+    World fakeWorld;
+
+    RigidBody *body = new RigidBody;
+    body->setMass(10);
+    fakeWorld.addItem(body);
+
+    Particle *particleA = new Particle;
+    Particle *particleB = new Particle;
+    particleA->setMass(10);
+    particleB->setMass(10);
+    particleA->setForce(Vector2d::Zero());
+    particleB->setForce(Vector2d(0,1));
+    particleA->setPosition(Vector2d(0,0));
+    particleB->setPosition(Vector2d(0,1));
+    fakeWorld.addItem(particleA);
+    fakeWorld.addItem(particleB);
+
+    // test gravitational force
+    GravitationForce force(9.8); // use this constant to make varification 
easier
+    force.setWorld(&fakeWorld);
+    force.calcForce(true); // test variance errors in same run
+
+    // only affects particles
+    QCOMPARE(double(body->force()[0]), 0.0);
+    QCOMPARE(double(body->force()[1]), 0.0);
+
+    QCOMPARE(double(particleA->force()[0]), 0.0);
+    QCOMPARE(double(particleA->force()[1]), 980.0);
+    QCOMPARE(double(particleB->force()[0]), 0.0);
+    QCOMPARE(double(particleB->force()[1]), -979.0); // note the force
+
+    QCOMPARE(double(particleA->particleErrors()->positionVariance()[0]), 0.0);
+    QCOMPARE(double(particleA->particleErrors()->positionVariance()[1]), 0.0);
+
+    QVERIFY(force.world());
+}
+
+void TestForces::testWeightForce()
+{
+    // setup world
+    World fakeWorld;
+
+    Particle *particle = new Particle;
+    particle->setMass(10);
+    fakeWorld.addItem(particle);
+
+    RigidBody *body = new RigidBody;
+    body->setMass(10);
+    body->setPosition(Vector2d::Zero());
+    fakeWorld.addItem(body);
+
+    WeightForce force(9.8); // use this constant to make varification easier
+    force.setWorld(&fakeWorld);
+    force.calcForce(true); // test variance errors in same run
+
+    QCOMPARE(double(particle->force()[0]), 0.0);
+    QCOMPARE(double(particle->force()[1]), -98.0);
+    QCOMPARE(double(particle->particleErrors()->accelerationVariance()[0]), 
0.0);
+    QVERIFY(double(particle->particleErrors()->accelerationVariance()[1]) < 
1e-9);
+
+    QCOMPARE(double(body->force()[0]), 0.0);
+    QCOMPARE(double(body->force()[1]), -98.0);
+    QCOMPARE(double(body->position()[0]), 0.0);
+    QCOMPARE(double(body->position()[1]), 0.0);
+    QCOMPARE(double(body->torque()), 0.0);
+    QCOMPARE(double(body->rigidBodyErrors()->accelerationVariance()[0]), 0.0);
+    QVERIFY(double(body->rigidBodyErrors()->accelerationVariance()[1]) < 1e-9);
+}
+
+QTEST_MAIN(TestForces)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/autotests/test_forces.h 
new/step-15.12.0/autotests/test_forces.h
--- old/step-15.08.3/autotests/test_forces.h    1970-01-01 01:00:00.000000000 
+0100
+++ new/step-15.12.0/autotests/test_forces.h    2015-11-04 15:29:54.000000000 
+0100
@@ -0,0 +1,35 @@
+/*
+ *  Copyright 2015  Andreas Cord-Landwehr <cordlandw...@kde.org>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) version 3, or any
+ *  later version accepted by the membership of KDE e.V. (or its
+ *  successor approved by the membership of KDE e.V.), which shall
+ *  act as a proxy defined in Section 6 of version 3 of the license.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library.  If not, see 
<http://www.gnu.org/licenses/>.
+ */
+
+#ifndef TEST_FORCES_H
+#define TEST_FORCES_H
+
+#include <QTest>
+
+class TestForces: public QObject
+{
+    Q_OBJECT
+
+private Q_SLOTS:
+    void testGravitationalForce();
+    void testWeightForce();
+};
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/org.kde.step.appdata.xml 
new/step-15.12.0/org.kde.step.appdata.xml
--- old/step-15.08.3/org.kde.step.appdata.xml   2015-11-04 19:37:34.000000000 
+0100
+++ new/step-15.12.0/org.kde.step.appdata.xml   2015-11-04 15:29:54.000000000 
+0100
@@ -29,6 +29,7 @@
   <name xml:lang="sk">Step</name>
   <name xml:lang="sl">Step</name>
   <name xml:lang="sv">Step</name>
+  <name xml:lang="tr">Adım</name>
   <name xml:lang="uk">Step</name>
   <name xml:lang="x-test">xxStepxx</name>
   <name xml:lang="zh-CN">Step</name>
@@ -57,6 +58,7 @@
   <summary xml:lang="sk">Interaktívny fyzikálny simulátor</summary>
   <summary xml:lang="sl">Interaktivni fizikalni simulator</summary>
   <summary xml:lang="sv">Interaktiv fysiksimulator</summary>
+  <summary xml:lang="tr">Etkileşimli Fizik Öykünücüsü</summary>
   <summary xml:lang="uk">Інтерактивний фізичний імітатор</summary>
   <summary xml:lang="x-test">xxInteractive Physical Simulatorxx</summary>
   <summary xml:lang="zh-CN">交互式物理模拟器</summary>
@@ -83,6 +85,7 @@
     <p xml:lang="sk">Step je interaktívny fyzikálny simulátor. Umožňuje vám 
objaviť fyzikálny svet cez simulácie. Funguje takto: umiestnite nejaké telesá 
na scénu, pridáte nejaké sily ako gravitáciu alebo pružiny, potom kliknete na 
Simulácia a Step vám ukáže, ako sa vaša scéna bude vyvíjať podľa zákonov 
fyziky. Môžete zmeniť každú vlastnosť telies/síl vo vašom experimente (aj  
počas simulácie) a vidieť, ako to zmení vývoj experimentu. S programom Step sa 
nielen učíte, ale aj cítite, ako fyzika funguje!</p>
     <p xml:lang="sl">Step je interaktivni fizikalni simulator. Omogoča vam 
raziskovati svet fizike preko simulacij. Deluje pa na naslednji način: v sceno 
postavite nekaj teles ter dodate sile kot npr. težnost ali vzmeti. Nato 
kliknete na Simuliraj in Step vam pokaže, kako bi se scena odvila glede na 
fizikalne zakone. V poskusu lahko spremenite katerokoli lastnost teles/sil 
(celo med simulacijo) in si ogledate, kako bi to vplivalo na razvoj poskusa. S 
programom Step se ne le naučite, ampak tudi občutite kako fizikalni zakoni 
delujejo!</p>
     <p xml:lang="sv">Step är en interaktiv fysiksimulator. Den låter dig 
utforska den fysiska värden genom simuleringar. Den fungerar så här: Du 
placerar några kroppar i diagrammet, lägger till några krafter som gravitation 
eller fjädrar, och klickar därefter på Simulera så visar Step dig hur 
diagrammet förändras enligt fysikens lagar. Du kan ändra alla egenskaper hos 
kropparna och krafterna i experimentet (till och med under simuleringen) och se 
hur det påverkar experimentets förlopp. Med Step kan du inte bara lära dig hur 
fysiken fungerar, utan också få en känsla för det.</p>
+    <p xml:lang="tr">Step bir etkileşimli fizik öykünücüsüdür. Fiziksel 
dünyayı simülasyonlarla keşfetmenize imkan verir. Şöyle çalışır: ekranda bazı 
nesneleri seçersiniz ve yerçekimi veya yay gibi kuvvetler eklersiniz, ardından 
Hesapla tuşuna tıkladığınızda Step fizik kurallarına göre ekranın nasıl 
dönüşeceğini gösterir. Deneyinizdeki cisimlerin/kuvvetlerin her özelliğini 
(simülasyon sırasında bile) değiştirerek bunun sonucu nasıl değiştirdiğini 
görebilirsiniz. Step ile fiziği sadece öğrenmez onu hissedersiniz!</p>
     <p xml:lang="uk">Step є інтерактивним імітатором фізичних процесів. Він 
надає вам змогу вивчати фізичні явища за допомогою їх імітації. Ось як він 
працює: ви розташовуєте у дослідній області деякі тіла, додаєте сили їх 
взаємодії (такі як гравітаційні сили та пружні сили у вигляді пружин), а потім 
натискаєте кнопку «Імітувати, — Step покаже як розвиватимуться події у 
побудованій вами системі з плином часу відповідно до законів фізики. Ви можете 
змінювати всі властивості тіл або сил у вашому експерименті (навіть під час 
імітації), щоб побачити як такі зміни впливають на перебіг експерименту. За 
допомогою Step ви не просто вивчите фізику, а відчуєте як працюють фізичні 
закони!</p>
     <p xml:lang="x-test">xxStep is an interactive physical simulator. It 
allows you to explore the physical world through simulations. It works like 
this: you place some bodies on the scene, add some forces such as gravity or 
springs, then click Simulate and Step shows you how your scene will evolve 
according to the laws of physics. You can change every property of the 
bodies/forces in your experiment (even during simulation) and see how this will 
change evolution of the experiment. With Step you cannot only learn but feel 
how physics works!xx</p>
     <p xml:lang="zh-TW">Step 
是一套互動式的物理模擬器。它可以讓您透過模擬探索物理的世界。它的運作方式是這樣的:您在場景中放入一些主體,加上一些力,如重力或彈力等,然後按下模擬鍵,Step 
就會顯示出在您的場景中,根據物理定律產生的結果。您可以改變每個主體與力的屬性(甚至實驗中也可比改變),並看看它所造成的變化。有了 Step 
您不只可以學習,更可以直接感受物理!</p>
@@ -110,6 +113,7 @@
     <p xml:lang="sk">Funkcie:</p>
     <p xml:lang="sl">Zmožnosti:</p>
     <p xml:lang="sv">Funktioner:</p>
+    <p xml:lang="tr">Özellikler:</p>
     <p xml:lang="uk">Можливості:</p>
     <p xml:lang="x-test">xxFeatures:xx</p>
     <p xml:lang="zh-CN">功能:</p>
@@ -136,6 +140,7 @@
       <li xml:lang="sk">Simulácie klasickej mechaniky v dvoch rozmeroch</li>
       <li xml:lang="sl">Klasične mehanske simulacije v dveh dimenzijah</li>
       <li xml:lang="sv">Simulering av klassisk mekanik i två dimensioner</li>
+      <li xml:lang="tr">İki boyutlu klasik mekanik simülasyonu</li>
       <li xml:lang="uk">Імітація класичної механічної взаємодії у двох 
вимірах</li>
       <li xml:lang="x-test">xxClassical mechanical simulation in two 
dimensionsxx</li>
       <li xml:lang="zh-TW">傳統的二維機械模擬</li>
@@ -160,6 +165,7 @@
       <li xml:lang="sk">Častice, pružiny s tlakom, gravitačné a coulombove 
sily</li>
       <li xml:lang="sl">Delci, vzmeti z dušenjem, težnostne in električne 
sile</li>
       <li xml:lang="sv">Partiklar, dämpade fjädrar, gravitationskrafter och 
coulombkrafter</li>
+      <li xml:lang="tr">Parçacıklar, sönümlemeli yaylar, yer çekimi ve coulomb 
kuvvetleri</li>
       <li xml:lang="uk">Частинки, пружини з елементами в’язкості, гравітаційні 
і кулонові сили</li>
       <li xml:lang="x-test">xxParticles, springs with damping, gravitational 
and coulomb forcesxx</li>
       <li xml:lang="zh-TW">粒子,有阻力的彈力,重力與庫倫力等</li>
@@ -184,6 +190,7 @@
       <li xml:lang="sk">Tuhé telesá</li>
       <li xml:lang="sl">Toga telesa</li>
       <li xml:lang="sv">Stela kroppar</li>
+      <li xml:lang="tr">Katı cisimler</li>
       <li xml:lang="uk">Тверді тіла</li>
       <li xml:lang="x-test">xxRigid bodiesxx</li>
       <li xml:lang="zh-TW">堅固主體</li>
@@ -208,6 +215,7 @@
       <li xml:lang="sk">Detekcia kolízií (aktuálne iba oddelené) a ich 
spracovanie</li>
       <li xml:lang="sl">Zaznavanje trkov (trenutno samo diskretnih) in njihovo 
obravnavanje</li>
       <li xml:lang="sv">Detektering och hantering av kollisioner (för 
närvarande bara diskreta)</li>
+      <li xml:lang="tr">Çarpışma algılama (şu anda sadece ayrık) ve 
idaresi</li>
       <li xml:lang="uk">Виявлення (у цій версії лише дискретне) і керування 
зіткненнями</li>
       <li xml:lang="x-test">xxCollision detection (currently only discrete) 
and handlingxx</li>
       <li xml:lang="zh-TW">碰撞偵測(目前只有不連接的)與處理</li>
@@ -232,6 +240,7 @@
       <li xml:lang="sk">Mäkké (deformovateľné) telesá simulované ako 
používateľom upraviteľné systémy častíc-pružín, zvukové vlny</li>
       <li xml:lang="sl">Simulacija mehkih teles kot sistem delcev/vzmeti, ki 
jih lahko uredi uporabnik; zvočni valovi</li>
       <li xml:lang="sv">Mjuka (deformerbara) kroppar simulerade som system med 
partiklar och fjädrar redigerbara av användaren, ljudvågor</li>
+      <li xml:lang="tr">Yumuşak (form değiştirebilen), kullanıcının 
düzenleyebildiği parçacık-yay sistemleri, ses dalgaları</li>
       <li xml:lang="uk">М’які (пружні) тіла імітуються як система з часточок і 
пружин, з можливістю зміни її параметрів користувачем, рух якої описують 
гармонічні функції</li>
       <li xml:lang="x-test">xxSoft (deformable) bodies simulated as 
user-editable particles-springs system, sound wavesxx</li>
       <li xml:lang="zh-TW">軟性(可變形)主體,模擬成使用者可編輯的粒子彈性系統,聲波</li>
@@ -256,6 +265,7 @@
       <li xml:lang="sk">Molekulárna dynamika (aktuálne používa 
Lennardov-Jonesov potenciál): plyn a kvapalina, kondenzácia a vyparovanie, 
výpočet makroskopických kvantít a ich odchýliek</li>
       <li xml:lang="sl">Molekulska dinamika (trenutno uporablja 
Lennard-Jonesov potencial): plini in tekočine, kondenzacija in izparevanje, 
izračun makroskopskih količin in njihovih varianc</li>
       <li xml:lang="sv">Molekyldynamik (för närvarande med användning av 
Lennard-Jones potentialen): gaser och vätskor, kondensering och avdunstning, 
beräkning av makroskopiska kvantiteter och deras varians</li>
+      <li xml:lang="tr">Moleküler dinamik (şu anda Lennard-Jones potansiyeli 
kullanıyor): gaz ve sıvı, yoğuşma ve buharlaşma, makroskopik miktarların ve 
sapmaların hesaplanması</li>
       <li xml:lang="uk">Молекулярна динаміка (у цій версії з використанням 
потенціалу Леннарда-Джонса): газ і рідина, конденсація і випаровування, 
обчислення макроскопічних величин та їх змін</li>
       <li xml:lang="x-test">xxMolecular dynamics (currently using 
Lennard-Jones potential): gas and liquid, condensation and evaporation, 
calculation of macroscopic quantities and their variancesxx</li>
       <li xml:lang="zh-TW">分子動態(目前使用雷納德-瓊斯勢能,Lennard-Jones 
potential):氣體與液體,濃縮與蒸發,可見質量與變異的計算</li>
@@ -280,6 +290,7 @@
       <li xml:lang="sk">Konverzie jednotiek a výpočet výrazov: môžete zadať 
niečo ako "(2 dni + 3 hodiny) * 80 km/h" a bude to prijaté ako hodnota 
vzdialenosti (vyžaduje libqalculate)</li>
       <li xml:lang="sl">Pretvorbe enot in izračuni izrazov: če vnesete npr. 
"(2 dni + 3 ure) * 80 km/h", bo to obravnavano kot dolžinska vrednost (zahteva 
libqalculate)</li>
       <li xml:lang="sv">Enhetskonvertering och uttrycksberäkning: Du kan 
skriva in någonting i stil med "(2 dagar + 3 timmar) * 80 km/h", vilket 
accepteras som ett avståndsvärde (kräver libqalculate)</li>
+      <li xml:lang="tr">Birim dönüştürme ve ifade hesaplama: "(2 gün + 3 saat) 
* 80 km/h" gibi bir ifade girebilirsiniz ve bu mesafe değeri (libqalculate 
gerektirir) olarak kabul edilecektir</li>
       <li xml:lang="uk">Перетворення одиниць і обчислення виразів: ви можете 
ввести щось на зразок «(2 дні + 3 години) * 80 км/г» і цю величину буде 
прийнято як значення відстані (для того, щоб це працювало слід встановити 
libqalculate)</li>
       <li xml:lang="x-test">xxUnits conversion and expression calculation: you 
can enter something like "(2 days + 3 hours) * 80 km/h" and it will be accepted 
as distance value (requires libqalculate)xx</li>
       <li xml:lang="zh-TW">單位轉換與表示式計算:您可以輸入像是 "(2 days + 3 hours) * 80 km/h" 
它會接受並做距離計算(需要 libqalculate)</li>
@@ -304,6 +315,7 @@
       <li xml:lang="sk">Výpočet a šírenie chýb: môžete zadať hodnoty ako "1,3 
± 0,2" pre ľubovoľnú vlastnosť a chyby pre všetky závislé vlastnosti sa 
prepočítajú pomocou štatistických vzorcov</li>
       <li xml:lang="sl">Izračun napak in njihov prenos: vnesete lahko npr. 
"1.3 ± 0.2" za katerokoli vrednost in napake za vse odvisne lastnosti bodo 
izračunane s pomočjo statističnih enačb</li>
       <li xml:lang="sv">Felberäkning och felpropagering: Du kan skriva in 
värden som "1,3 ± 0,2" för alla egenskaper, och fel för alla beroende 
egenskaper beräknas med statistiska formler</li>
+      <li xml:lang="tr">Hata hesaplama ve yayılım: her özellik için "1.3 ± 
0.2" gibi değerler girebilirsiniz ve tüm bağımlı özelliklerin hataları 
istatistik formülleri kullanılarak hesaplanır</li>
       <li xml:lang="uk">Обчислення і поширення похибок: ви можете вводити 
значення на зразок «1.3 ± 0.2» для будь-якої з властивостей, і похибки для всіх 
властивостей, що залежать від вказаної властивості, буде обчислено за 
статистичними формулами</li>
       <li xml:lang="x-test">xxErrors calculation and propagation: you can 
enter values like "1.3 ± 0.2" for any property and errors for all dependent 
properties will be calculated using statistical formulasxx</li>
       <li xml:lang="zh-TW">計算與增殖誤差:您可以對每個屬性輸入像是 "1.3 ± 0.2" 
允許誤差值,它會使用統計公式來計算</li>
@@ -328,6 +340,7 @@
       <li xml:lang="sk">Odhad chýb riešiteľa: chyby spôsobené riešiteľom sa 
počítajú a pridávajú do používateľom zadaných chýb</li>
       <li xml:lang="sl">Ocena napake reševalnika: napake, ki so posledica 
računanja reševalnika, se izračunajo in dodajo k uporabniško vnesenim 
napakam</li>
       <li xml:lang="sv">Feluppskattning av evalueringsenheten: fel som införs 
av evalueringsenheten beräknas och läggs till användarinmatade fel</li>
+      <li xml:lang="tr">Çözücü hata tahmini: çözücü tarafından katılan hatalar 
hesaplanır ve kullanıcı tarafından girilen hatalara ilave edilir</li>
       <li xml:lang="uk">Оцінка похибки розв’язувача: похибки, що виникають 
внаслідок застосування числових методів розв’язання задач, обчислюються і 
додаються до введених користувачем похибок</li>
       <li xml:lang="x-test">xxSolver error estimation: errors introduced by 
the solver is calculated and added to user-entered errorsxx</li>
       <li xml:lang="zh-TW">計算器誤差估計:由計算器造成的誤差會被計算,並加入使用者輸入的誤差</li>
@@ -352,6 +365,7 @@
       <li xml:lang="sk">Niekoľko rôznych riešiteľov: do 8. úrovne, explicitné 
a implicitné, s alebo bez adaptívnej časovej pečiatky (väčšina riešiteľov 
vyžaduje knižnicu GSL)</li>
       <li xml:lang="sl">Različni reševalniki: do osmega reda, eksplicitni in 
implicitni, brez ali z prilagodljivim časovnim korakom (večina reševalnikov 
zahteva knjižnico GSL)</li>
       <li xml:lang="sv">Flera olika evalueringsenheter: Upp till 8:e 
ordningens, explicit eller implicit, med eller utan adaptivt tidssteg (de 
flesta evalueringsenheter kräver GSL-biblioteket)</li>
+      <li xml:lang="tr">Çeşitli farklı çözücüler: 8. dereceye kadar, açık ve 
kapalı, uyarlanabilir zamanlama varken ve yokken (çözücülerin çoğu GSL 
kitaplığını gerektirir)</li>
       <li xml:lang="uk">Декілька різних розв’язувачів: аж до восьмого порядку, 
явні і неявні, з та без зміни кроку за часом (більшість з розв’язувачів 
потребують бібліотеки GSL)</li>
       <li xml:lang="x-test">xxSeveral different solvers: up to 8th order, 
explicit and implicit, with or without adaptive timestep (most of the solvers 
require GSL library)xx</li>
       <li xml:lang="zh-TW">數種不同的計算器:最高到八階,外顯與內含的,包含與不包含時間(大部份的計算器都需要 GSL 
函式庫)</li>
@@ -376,6 +390,7 @@
       <li xml:lang="sk">Nástroj ovládača na jednoduché ovládanie vlastností 
počas simulácie (dokonca s vlastnými klávesovými skratkami)</li>
       <li xml:lang="sl">Nadzorno orodje za enostaven nadzor nad lastnostmi med 
simulacijo (celo s tipkovnimi bližnjicami po meri)</li>
       <li xml:lang="sv">Styrverktyg för att enkelt hantera egenskaper under 
simuleringen (också med egna snabbtangenter)</li>
+      <li xml:lang="tr">Simülasyon sırasında özelliklerin kontrolü için araç 
(özel klavye kısayolları ile bile kullanılabilir)</li>
       <li xml:lang="uk">Інструмент «регулятор» призначено для простого 
керування властивостями під час імітації (можна навіть призначити власні 
клавіатурні скорочення для керування регулятором)</li>
       <li xml:lang="x-test">xxController tool to easily control properties 
during simulation (even with custom keyboard shortcuts)xx</li>
       <li xml:lang="zh-TW">用於在模擬實驗時控制變因的控制工具(還有鍵盤捷徑)</li>
@@ -400,6 +415,7 @@
       <li xml:lang="sk">Nástroje na vizualizáciu výsledkov: graf, meter, 
stopár</li>
       <li xml:lang="sl">Orodja za prikaz rezultatov: graf, merilnik, 
sledilnik</li>
       <li xml:lang="sv">Verktyg för att åskådliggöra resultat: grafer, mätare, 
spår</li>
+      <li xml:lang="tr">Sonuçları görselleştirmek için araçlar: grafik, metre, 
izleyici</li>
       <li xml:lang="uk">Інструменти для візуалізації результатів: графік, 
вимірювач, траєкторія</li>
       <li xml:lang="x-test">xxTools to visualize results: graph, meter, 
tracerxx</li>
       <li xml:lang="zh-TW">視覺化結果的工具:圖形、尺、追蹤器</li>
@@ -424,6 +440,7 @@
       <li xml:lang="sk">Kontextové informácie pre všetky objekty, integrovaný 
prehliadač Wikipédia</li>
       <li xml:lang="sl">Vsebinske podrobnosti za vse predmete, vgrajen 
brskalnik po Wikipediji</li>
       <li xml:lang="sv">Sammanhangsberoende information för alla objekt, 
inbyggd Wikipedia-bläddrare</li>
+      <li xml:lang="tr">Tüm nesneler için içerik bilgileri, entegre wikipedia 
tarayıcı</li>
       <li xml:lang="uk">Контекстна інформація щодо всіх об’єктів, інтегрований 
переглядач вікіпедії</li>
       <li xml:lang="x-test">xxContext information for all objects, integrated 
wikipedia browserxx</li>
       <li xml:lang="zh-TW">所有物件的內文資訊,整合的維基瀏覽器</li>
@@ -448,6 +465,7 @@
       <li xml:lang="sk">Kolekcia ukážkových experimentov, viac je možné 
stiahnuť z KNewStuff</li>
       <li xml:lang="sl">Zbirka primerov poskusov, več jih lahko prejmete z 
"Dobi vroče novosti"</li>
       <li xml:lang="sv">En samling exempel på experiment, och fler kan laddas 
ner via Hämta heta nyheter</li>
+      <li xml:lang="tr">Örnek deney koleksiyonu, daha çoğu KNewStuff ile 
indirilebilir</li>
       <li xml:lang="uk">Збірка зразкових експериментів, додаткові експерименти 
можна отримати за допомогою KNewStuff</li>
       <li xml:lang="x-test">xxCollection of example experiments, more can be 
downloaded with KNewStuffxx</li>
       <li xml:lang="zh-TW">範例實驗的收藏。可以透過 KNewStuff 下載更多</li>
@@ -472,6 +490,7 @@
       <li xml:lang="sk">Integrované kurzy</li>
       <li xml:lang="sl">Vgrajeni vodniki</li>
       <li xml:lang="sv">Integrerade handledningar</li>
+      <li xml:lang="tr">Bütünleşik öğreticiler</li>
       <li xml:lang="uk">Вбудовані підручники</li>
       <li xml:lang="x-test">xxIntegrated tutorialsxx</li>
       <li xml:lang="zh-TW">整合教學</li>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/step/gasgraphics.cc 
new/step-15.12.0/step/gasgraphics.cc
--- old/step-15.08.3/step/gasgraphics.cc        2015-11-04 19:37:34.000000000 
+0100
+++ new/step-15.12.0/step/gasgraphics.cc        2015-11-04 15:29:54.000000000 
+0100
@@ -138,20 +138,20 @@
 }
 
 StepCore::Vector2d GasVertexHandlerGraphicsItem::value() {
-    return gas()->measureRectSize().cwise()*(corners[_vertexNum]);
+    return 
(gas()->measureRectSize().array()*(corners[_vertexNum]).array()).matrix();
 }
 
 void GasVertexHandlerGraphicsItem::setValue(const StepCore::Vector2d& value)
 {
     StepCore::Vector2d oCorner = gas()->measureRectCenter() -
-                    gas()->measureRectSize().cwise()*(corners[_vertexNum]);
+                    
(gas()->measureRectSize().array()*(corners[_vertexNum].array())).matrix();
 
     StepCore::Vector2d delta = (gas()->measureRectCenter() + value - 
oCorner)/2.0;
     StepCore::Vector2d newPos = oCorner + delta;
     StepCore::Vector2d newSize = (newPos - oCorner)*2.0;
 
     double d = -0.1/currentViewScale();
-    StepCore::Vector2d sign = delta.cwise()*(corners[_vertexNum]);
+    StepCore::Vector2d sign = 
(delta.array()*(corners[_vertexNum].array())).matrix();
     if(sign[0] < d || sign[1] < d) {
         if(sign[0] < d) {
             newPos[0] = oCorner[0]; newSize[0] = 0;
@@ -270,7 +270,7 @@
 
     int num = -1; double minDist2 = HANDLER_SNAP_SIZE*HANDLER_SNAP_SIZE/s/s;
     for(unsigned int i=0; i<4; ++i) {
-        double dist2 = (l - 
size.cwise()*(OnHoverHandlerGraphicsItem::corners[i])).squaredNorm();
+        double dist2 = (l - 
(size.array()*(OnHoverHandlerGraphicsItem::corners[i]).array()).matrix()).squaredNorm();
         if(dist2 < minDist2) { num = i; minDist2 = dist2; }
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/step/main.cc 
new/step-15.12.0/step/main.cc
--- old/step-15.08.3/step/main.cc       2015-11-04 19:37:34.000000000 +0100
+++ new/step-15.12.0/step/main.cc       2015-11-04 15:29:54.000000000 +0100
@@ -23,6 +23,7 @@
 #include <KLocalizedString>
 #include <QUrl>
 #include <QDir>
+#include <QIcon>
 
 #include "mainwindow.h"
 
@@ -37,14 +38,13 @@
 {
     KLocalizedString::setApplicationDomain("step");
 
+    QApplication app(argc, argv);
     QApplication::setApplicationName("step");
     QApplication::setApplicationVersion(version);
     QApplication::setOrganizationDomain("kde.org");
     QApplication::setApplicationDisplayName(i18n("Step"));
     QApplication::setWindowIcon(QIcon::fromTheme("step"));
 
-    QApplication app(argc, argv);
-
     KAboutData aboutData("step",
                          i18n("Step"),
                          version,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/step/polygongraphics.cc 
new/step-15.12.0/step/polygongraphics.cc
--- old/step-15.08.3/step/polygongraphics.cc    2015-11-04 19:37:34.000000000 
+0100
+++ new/step-15.12.0/step/polygongraphics.cc    2015-11-04 15:29:54.000000000 
+0100
@@ -547,21 +547,21 @@
 }
 
 StepCore::Vector2d BoxVertexHandlerGraphicsItem::value() {
-    return 
box()->vectorLocalToWorld(box()->size().cwise()*(corners[_vertexNum]));
+    return 
box()->vectorLocalToWorld((box()->size().array()*(corners[_vertexNum]).array()).matrix());
     //return box()->vectorLocalToWorld(box()->vertexes()[_vertexNum]);
 }
 
 void BoxVertexHandlerGraphicsItem::setValue(const StepCore::Vector2d& value)
 {
     StepCore::Vector2d oCorner = box()->position() -
-                        box()->size().cwise()*(corners[_vertexNum]);
+                        
(box()->size().array()*(corners[_vertexNum].array())).matrix();
 
     StepCore::Vector2d delta = (box()->position() + value - oCorner)/2.0;
     StepCore::Vector2d newPos = oCorner + delta;
     StepCore::Vector2d newSize = (newPos - oCorner)*2.0;
 
     double d = -0.1/currentViewScale();
-    StepCore::Vector2d sign = delta.cwise()*(corners[_vertexNum]);
+    StepCore::Vector2d sign = 
(delta.array()*(corners[_vertexNum]).array()).matrix();
     if(sign[0] < d || sign[1] < d) {
         if(sign[0] < d) {
             newPos[0] = oCorner[0]; newSize[0] = 0;
@@ -603,7 +603,7 @@
     
     int num = -1; double minDist2 = HANDLER_SNAP_SIZE*HANDLER_SNAP_SIZE/s/s;
     for(unsigned int i=0; i<4; ++i) {
-        double dist2 = (l - 
size.cwise()*(OnHoverHandlerGraphicsItem::corners[i])).squaredNorm();
+        double dist2 = (l - 
(size.array()*(OnHoverHandlerGraphicsItem::corners[i]).array()).matrix()).squaredNorm();
         if(dist2 < minDist2) { num = i; minDist2 = dist2; }
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/step/toolgraphics.cc 
new/step-15.12.0/step/toolgraphics.cc
--- old/step-15.08.3/step/toolgraphics.cc       2015-11-04 19:37:34.000000000 
+0100
+++ new/step-15.12.0/step/toolgraphics.cc       2015-11-04 15:29:54.000000000 
+0100
@@ -79,7 +79,7 @@
     double s = currentViewScale();
     StepCore::Vector2d size = _item->metaObject()->property("size")->
                             readVariant(_item).value<StepCore::Vector2d>()/s;
-    return size.cwise()* corners[_vertexNum];
+    return (size.array()* corners[_vertexNum].array()).matrix();
 }
 
 void WidgetVertexHandlerGraphicsItem::setValue(const StepCore::Vector2d& value)
@@ -94,7 +94,7 @@
     StepCore::Vector2d position = _item->metaObject()->property("position")->
                             readVariant(_item).value<StepCore::Vector2d>();
 
-    StepCore::Vector2d oCorner = position - size.cwise()*(corners[_vertexNum]);
+    StepCore::Vector2d oCorner = position - 
(size.array()*((corners[_vertexNum]).array())).matrix();
 
     oCorner = pointToVector( viewportTransform.inverted().map(
                 
QPointF(viewportTransform.map(vectorToPoint(oCorner)).toPoint()) ));
@@ -105,7 +105,7 @@
                 
QPointF(viewportTransform.map(vectorToPoint(newPos)).toPoint()) ));
     StepCore::Vector2d newSize = (newPos - oCorner)*2.0;
 
-    StepCore::Vector2d sign = delta.cwise()*(corners[_vertexNum]);
+    StepCore::Vector2d sign = 
(delta.array()*(corners[_vertexNum].array())).matrix();
     double d = -0.1/s;
     if(sign[0] < d || sign[1] < d) {
         if(sign[0] < d) {
@@ -157,7 +157,7 @@
 
     int num = -1; double minDist2 = HANDLER_SNAP_SIZE*HANDLER_SNAP_SIZE/s/s;
     for(unsigned int i=0; i<4; ++i) {
-        double dist2 = (l - 
size.cwise()*(WidgetVertexHandlerGraphicsItem::corners[i])).squaredNorm();
+        double dist2 = (l - 
(size.array()*(WidgetVertexHandlerGraphicsItem::corners[i]).array()).matrix()).squaredNorm();
         if(dist2 < minDist2) { num = i; minDist2 = dist2; }
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/stepcore/constraintsolver.cc 
new/step-15.12.0/stepcore/constraintsolver.cc
--- old/step-15.08.3/stepcore/constraintsolver.cc       2015-11-04 
19:37:34.000000000 +0100
+++ new/step-15.12.0/stepcore/constraintsolver.cc       2015-11-04 
15:29:54.000000000 +0100
@@ -20,6 +20,7 @@
 #include "rigidbody.h"
 #include "particle.h"
 #include "types.h"
+#include <iostream>
 #include <unsupported/Eigen/IterativeSolvers>
 #include <cmath>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/stepcore/coulombforce.cc 
new/step-15.12.0/stepcore/coulombforce.cc
--- old/step-15.08.3/stepcore/coulombforce.cc   2015-11-04 19:37:34.000000000 
+0100
+++ new/step-15.12.0/stepcore/coulombforce.cc   2015-11-04 15:29:54.000000000 
+0100
@@ -68,12 +68,13 @@
                 ChargedParticleErrors* pe1 = p1->chargedParticleErrors();
                 ChargedParticleErrors* pe2 = p2->chargedParticleErrors();
                 Vector2d rV = pe2->positionVariance() + 
pe1->positionVariance();
-                Vector2d forceV = force.cwise().square().cwise()* (
-                        Vector2d(coulombForceErrors()->_coulombConstVariance / 
square(_coulombConst) +
-                                 pe1->chargeVariance() / square(p1->charge()) +
-                                 pe2->chargeVariance() / square(p2->charge())) 
+
+                double chargeVariance = 
coulombForceErrors()->_coulombConstVariance / square(_coulombConst) +
+                                        pe1->chargeVariance() / 
square(p1->charge()) +
+                                        pe2->chargeVariance() / 
square(p2->charge());
+                Vector2d forceV = force.array().square()* (
+                        Vector2d(chargeVariance, chargeVariance) +
                         Vector2d(rV[0] * square(1/r[0] - 3*r[0]/rnorm2) + 
rV[1] * square(3*r[1]/rnorm2),
-                                 rV[1] * square(1/r[1] - 3*r[1]/rnorm2) + 
rV[0] * square(3*r[0]/rnorm2)));
+                                 rV[1] * square(1/r[1] - 3*r[1]/rnorm2) + 
rV[0] * square(3*r[0]/rnorm2))).array();
                 pe1->applyForceVariance(forceV);
                 pe2->applyForceVariance(forceV);
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/stepcore/eulersolver.cc 
new/step-15.12.0/stepcore/eulersolver.cc
--- old/step-15.08.3/stepcore/eulersolver.cc    2015-11-04 19:37:34.000000000 
+0100
+++ new/step-15.12.0/stepcore/eulersolver.cc    2015-11-04 15:29:54.000000000 
+0100
@@ -69,7 +69,7 @@
     _ytemp = *y + (stepSize/2)*_ydiff;
         
     if(yvar) { // error calculation
-        *ytempvar = 
(yvar->cwise().sqrt()+(stepSize/2)*(*ydiffvar)).cwise().square();
+        *ytempvar = 
(yvar->array().sqrt().matrix()+(stepSize/2)*(*ydiffvar)).array().square().matrix();
     }
 
     int ret = _function(t + stepSize/2, _ytemp.data(), 
ytempvar?ytempvar->data():0,
@@ -105,8 +105,8 @@
         // For now we are using the following formula which
         // assumes that yerr are equal and correlated on adjacent steps
         // TODO: improve this formula
-        *yvar = 
(ytempvar->cwise().sqrt()+(stepSize/2)*(*ydiffvar)).cwise().square()
-              + 3*_yerr.cwise().square();
+        *yvar = 
(ytempvar->array().sqrt().matrix()+(stepSize/2)*(*ydiffvar)).array().square().matrix()
+              + 3*_yerr.array().square().matrix();
     }
 
     return OK;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/stepcore/gas.cc 
new/step-15.12.0/stepcore/gas.cc
--- old/step-15.08.3/stepcore/gas.cc    2015-11-04 19:37:34.000000000 +0100
+++ new/step-15.12.0/stepcore/gas.cc    2015-11-04 15:29:54.000000000 +0100
@@ -134,7 +134,7 @@
                     Vector2d rV = pe2->positionVariance() + 
pe1->positionVariance();
 
                     GasLJForceErrors* ge = gasLJForceErrors();
-                    Vector2d forceV = r.cwise().square() * (
+                    Vector2d forceV = r.array().square().matrix() * (
                         ge->_rminVariance * square( (12*_a/_rmin/rnorm6 - 
6*_b/_rmin)/rnorm8 ) +
                         ge->_depthVariance * square( 12*(_rmin12/rnorm6 - 
_rmin6)/rnorm8 ) );
 
@@ -364,7 +364,7 @@
         if(p1->position()[0] < r0[0] || p1->position()[0] > r1[0] ||
             p1->position()[1] < r0[1] || p1->position()[1] > r1[1]) continue;
 
-        velocityVariance += (p1->velocity() - velocity).cwise().square(); 
+        velocityVariance += (p1->velocity() - 
velocity).array().square().matrix();
 
         ParticleErrors* pe1 = 
static_cast<ParticleErrors*>(p1->tryGetObjectErrors());
         if(pe1) velocityVariance += pe1->velocityVariance();
@@ -422,7 +422,7 @@
         if(pe1) {
             energyVariance +=
                 pe1->massVariance() * square(p1->velocity().squaredNorm()) +
-                
((2*p1->mass()*p1->velocity()).cwise().square()).dot(pe1->velocityVariance());
+                
((2*p1->mass()*p1->velocity()).array().square().matrix()).dot(pe1->velocityVariance());
         }
 
         ++count;
@@ -481,7 +481,7 @@
         if(pe1) {
             temperatureVariance +=
                 pe1->massVariance() * square((p1->velocity() - 
meanVelocity).squaredNorm()) +
-                ((p1->mass()*(p1->velocity() - 
meanVelocity)).cwise().square()).dot(pe1->velocityVariance());
+                ((p1->mass()*(p1->velocity() - 
meanVelocity)).array().square().matrix()).dot(pe1->velocityVariance());
         }
 
         ++count;
@@ -540,7 +540,7 @@
         if(pe1) {
             pressureVariance +=
                 pe1->massVariance() * square((p1->velocity() - 
meanVelocity).squaredNorm()) +
-                ((p1->mass()*(p1->velocity() - 
meanVelocity)).cwise().square()).dot(pe1->velocityVariance());
+                ((p1->mass()*(p1->velocity() - 
meanVelocity)).array().square().matrix()).dot(pe1->velocityVariance());
         }
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/stepcore/gas.h 
new/step-15.12.0/stepcore/gas.h
--- old/step-15.08.3/stepcore/gas.h     2015-11-04 19:37:34.000000000 +0100
+++ new/step-15.12.0/stepcore/gas.h     2015-11-04 15:29:54.000000000 +0100
@@ -198,7 +198,7 @@
     void setMeasureRectCenter(const Vector2d& measureRectCenter) { 
_measureRectCenter = measureRectCenter; }
 
     const Vector2d& measureRectSize() const { return _measureRectSize; }
-    void setMeasureRectSize(const Vector2d& measureRectSize) { 
_measureRectSize = measureRectSize.cwise().abs(); }
+    void setMeasureRectSize(const Vector2d& measureRectSize) { 
_measureRectSize = measureRectSize.array().abs().matrix(); }
 
     /** Get (and possibly create) GasErrors object */
     GasErrors* gasErrors() {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/stepcore/gravitation.cc 
new/step-15.12.0/stepcore/gravitation.cc
--- old/step-15.08.3/stepcore/gravitation.cc    2015-11-04 19:37:34.000000000 
+0100
+++ new/step-15.12.0/stepcore/gravitation.cc    2015-11-04 15:29:54.000000000 
+0100
@@ -85,12 +85,9 @@
                 ParticleErrors* pe1 = p1->particleErrors();
                 ParticleErrors* pe2 = p2->particleErrors();
                 Vector2d rV = pe2->positionVariance() + 
pe1->positionVariance();
-                Vector2d forceV = force.cwise().square() .cwise()* (
-                        
Vector2d(gravitationForceErrors()->_gravitationConstVariance / 
square(_gravitationConst) +
-                                 pe1->massVariance() / square(p1->mass()) +
-                                 pe2->massVariance() / square(p2->mass())) +
-                        Vector2d(rV[0] * square(1/r[0] - 3*r[0]/rnorm2) + 
rV[1] * square(3*r[1]/rnorm2),
-                                 rV[1] * square(1/r[1] - 3*r[1]/rnorm2) + 
rV[0] * square(3*r[0]/rnorm2)));
+                Vector2d forceV = force.array().square()* (
+                    Vector2d(rV[0] * square(1/r[0] - 3*r[0]/rnorm2) + rV[1] * 
square(3*r[1]/rnorm2),
+                    rV[1] * square(1/r[1] - 3*r[1]/rnorm2) + rV[0] * 
square(3*r[0]/rnorm2))).array();
                 pe1->applyForceVariance(forceV);
                 pe2->applyForceVariance(forceV);
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/stepcore/particle.cc 
new/step-15.12.0/stepcore/particle.cc
--- old/step-15.08.3/stepcore/particle.cc       2015-11-04 19:37:34.000000000 
+0100
+++ new/step-15.12.0/stepcore/particle.cc       2015-11-04 15:29:54.000000000 
+0100
@@ -70,24 +70,24 @@
 Vector2d ParticleErrors::accelerationVariance() const
 {
     return _forceVariance/square(particle()->mass()) +
-        
_massVariance*(particle()->force()/square(particle()->mass())).cwise().square();
+        
_massVariance*(particle()->force()/square(particle()->mass())).array().square().matrix();
 }
 
 Vector2d ParticleErrors::momentumVariance() const
 {
     return _velocityVariance * square(particle()->mass()) +
-           particle()->velocity().cwise().square() * _massVariance;
+           (particle()->velocity().array().square()).matrix() * _massVariance;
 }
 
 void ParticleErrors::setMomentumVariance(const Vector2d& momentumVariance)
 {
-    _velocityVariance = (momentumVariance - 
particle()->velocity().cwise().square() * _massVariance) /
+    _velocityVariance = (momentumVariance - 
(particle()->velocity().array().square()).matrix() * _massVariance) /
                         square(particle()->mass());
 }
 
 double ParticleErrors::kineticEnergyVariance() const
 {
-    return particle()->velocity().cwise().square().dot(_velocityVariance) * 
square(particle()->mass()) +
+    return 
((particle()->velocity().array().square()).matrix()).dot(_velocityVariance) * 
square(particle()->mass()) +
            square(particle()->velocity().squaredNorm()/2) * _massVariance;
 }
 
@@ -95,7 +95,7 @@
 {
     _velocityVariance = (kineticEnergyVariance - 
square(particle()->velocity().squaredNorm()/2) * _massVariance) /
                         square(particle()->mass()) / 2 *
-                        
(particle()->velocity().cwise().square().cwise().inverse());
+                        
(particle()->velocity().array().square().array().inverse());
     if(!std::isfinite(_velocityVariance[0]) || _velocityVariance[0] < 0 ||
        !std::isfinite(_velocityVariance[1]) || _velocityVariance[1]) {
         _velocityVariance.setZero();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/stepcore/rigidbody.cc 
new/step-15.12.0/stepcore/rigidbody.cc
--- old/step-15.08.3/stepcore/rigidbody.cc      2015-11-04 19:37:34.000000000 
+0100
+++ new/step-15.12.0/stepcore/rigidbody.cc      2015-11-04 15:29:54.000000000 
+0100
@@ -105,7 +105,7 @@
 Vector2d RigidBodyErrors::accelerationVariance() const
 {
     return _forceVariance/square(rigidBody()->mass()) +
-        
_massVariance*(rigidBody()->force()/square(rigidBody()->mass())).cwise().square();
+        
_massVariance*(rigidBody()->force()/square(rigidBody()->mass())).array().square().matrix();
 }
 
 double RigidBodyErrors::angularAccelerationVariance() const
@@ -117,12 +117,12 @@
 Vector2d RigidBodyErrors::momentumVariance() const
 {
     return _velocityVariance * square(rigidBody()->mass()) +
-           rigidBody()->velocity().cwise().square() * _massVariance;
+           rigidBody()->velocity().array().square().matrix() * _massVariance;
 }
 
 void RigidBodyErrors::setMomentumVariance(const Vector2d& momentumVariance)
 {
-    _velocityVariance = (momentumVariance - 
rigidBody()->velocity().cwise().square() * _massVariance) /
+    _velocityVariance = (momentumVariance - 
rigidBody()->velocity().array().square().matrix() * _massVariance) /
                         square(rigidBody()->mass());
 }
 
@@ -141,7 +141,7 @@
 
 double RigidBodyErrors::kineticEnergyVariance() const
 {
-    return (rigidBody()->velocity().cwise().square()).dot(_velocityVariance) * 
square(rigidBody()->mass()) +
+    return 
(rigidBody()->velocity().array().square().matrix()).dot(_velocityVariance) * 
square(rigidBody()->mass()) +
            square(rigidBody()->velocity().squaredNorm()/2) * _massVariance +
            _angularVelocityVariance * square(rigidBody()->angularVelocity() * 
rigidBody()->inertia()) +
            square(square(rigidBody()->angularVelocity())/2) * _inertiaVariance;
@@ -150,9 +150,9 @@
 void RigidBodyErrors::setKineticEnergyVariance(double kineticEnergyVariance)
 {
     double t = kineticEnergyVariance - this->kineticEnergyVariance() +
-              
(rigidBody()->velocity().cwise().square()).dot(_velocityVariance) * 
square(rigidBody()->mass());
+              
(rigidBody()->velocity().array().square().matrix()).dot(_velocityVariance) * 
square(rigidBody()->mass());
     _velocityVariance = t / square(rigidBody()->mass()) / 2 *
-                        
(rigidBody()->velocity().cwise().square().cwise().inverse());
+                        
(rigidBody()->velocity().array().square().inverse().matrix());
     if(!std::isfinite(_velocityVariance[0]) || _velocityVariance[0] < 0 ||
        !std::isfinite(_velocityVariance[1]) || _velocityVariance[1]) {
         _velocityVariance.setZero();
@@ -349,7 +349,7 @@
 
 void Box::setSize(const Vector2d& size)
 {
-    Vector2d s(size.cwise().abs()/2.0);
+    Vector2d s(size.array().abs().matrix()/2.0);
 
     _vertexes[0] << -s[0], -s[1];
     _vertexes[1] <<  s[0], -s[1];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/stepcore/spring.cc 
new/step-15.12.0/stepcore/spring.cc
--- old/step-15.08.3/stepcore/spring.cc 2015-11-04 19:37:34.000000000 +0100
+++ new/step-15.12.0/stepcore/spring.cc 2015-11-04 15:29:54.000000000 +0100
@@ -112,8 +112,8 @@
         Vector2d forceV = (se->_restLengthVariance * square(_stiffness) +
                            se->_stiffnessVariance * square(dl) +
                            se->_dampingVariance * square(vr/l) +
-                           ( (_damping/l*r).cwise().square() ).dot(vV)
-                           )/square(l)*r.cwise().square();
+                           ( (_damping/l*r).array().square() ).matrix().dot(vV)
+                           )/square(l)*r.array().square();
 
         forceV[0] += rV[0] * square(_stiffness*( 1 - _restLength/l*(1 - 
square(r[0]/l)) ) +
                                     _damping/(l*l)*( v[0]*r[0] + vr - 
2*vr*square(r[0]/l) )) +
@@ -276,9 +276,9 @@
     return square(dl) * _stiffnessVariance +
            square(s->stiffness()) * _restLengthVariance +
            square(r.dot(v)/l) * _dampingVariance +
-           vV.dot((s->damping()/l*r).cwise().square()) +
+           vV.dot((s->damping()/l*r).array().square().matrix()) +
            rV.dot((( s->stiffness() - s->damping()*r.dot(v) / (l*l) ) / l * r +
-              s->damping() / l * v).cwise().square());
+              s->damping() / l * v).array().square().matrix());
 }
 
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/step-15.08.3/stepcore/tool.h 
new/step-15.12.0/stepcore/tool.h
--- old/step-15.08.3/stepcore/tool.h    2015-11-04 19:37:34.000000000 +0100
+++ new/step-15.12.0/stepcore/tool.h    2015-11-04 15:29:54.000000000 +0100
@@ -103,7 +103,7 @@
     /** Get size of the note */
     const Vector2d& size() const { return _size; }
     /** Set size of the note */
-    void setSize(const Vector2d& size) { _size = size.cwise().abs(); }
+    void setSize(const Vector2d& size) { _size = size.array().abs(); }
 
     /** Get note text */
     const QString& text() const { return _text; }
@@ -138,7 +138,7 @@
     /** Get size of the graph */
     const Vector2d& size() const { return _size; }
     /** Set size of the graph */
-    void setSize(const Vector2d& size) { _size = size.cwise().abs(); }
+    void setSize(const Vector2d& size) { _size = size.array().abs(); }
 
     /** Get pointer to the objects for X axis */
     Object* objectX() const { return _objectX; }
@@ -291,7 +291,7 @@
     /** Get size of the meter */
     const Vector2d& size() const { return _size; }
     /** Set size of the meter */
-    void setSize(const Vector2d& size) { _size = size.cwise().abs(); }
+    void setSize(const Vector2d& size) { _size = size.array().abs(); }
 
     /** Get pointer to the observed object */
     Object* object() const { return _object; }
@@ -370,7 +370,7 @@
     /** Get size of the Controller */
     const Vector2d& size() const { return _size; }
     /** Set size of the Controller */
-    void setSize(const Vector2d& size) { _size = size.cwise().abs(); }
+    void setSize(const Vector2d& size) { _size = size.array().abs(); }
 
     /** Get pointer to the controlled object */
     Object* object() const { return _object; }


Reply via email to