Turkanen

Hain kaljaa sen takia että saisin tuon ohjelmointiputken poikki. Kaljasta huolimatta kynnet syyhyää mutta kun aivo ei toimi.
Mutta toimii se silti paremmin kuin retardeilla ja muilla evouskiksilla.

Tosiasiassa minä olen huomattavan tyhmä. Olen pari viikkoa yrittänyt väsätä sellaista köyhänmiehen liukuluku ohjelmaa joka sopisi pieneen, parinkilon suorittimeen mukavammin kuin mikroC:stä pöllitty ohjelma, mutta siitä tuli lähes yhtä pitkä. Tosin pientä parannustakin on. Liukuluku-desimaalimuunnoksen onnistuin tunkemaan aika pieneen nippuun, harmi kyllä, tarkkuuden kustannuksella.

Onko alan miehiä kuulolla?
9673
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

Minulla oli aika kauan olemassa PDP-11-koneelle (RAM 16 kB) assembler-ohjelma Instronin testauslaitteelle vuodelta 1975. Siinä oli näppärästi paketissa perusaritmetiikkafunktiot liukuluvuille. Oli se aikaa, kun ohjelman latauskin piti tehdä Teletypen reikänauhanlukijalla ja kesti puolituntia - kunnes keksin tallentaa sen pääkoneen kovalevylle ja sieltä lankaa pitkin lataus - äänettömästi ja puolta nopeammin.

Oli ällistyttävää, miten niin pieneen tilaan sai ohjelman, joka sekä ohjasi laitetta, että käsitteli monikanavaisesti mittaustuoksia. Nyt sellainen systeemi vaatisi monta megaa muistia toimiakseen mitenkään. Myös PDP:n arkkitehtuuri oli nerokas verrattuna myöhempien aikojen Winsu PC-koneisiin. Keskeytysvektoreilla ja paluuosoitepinolla sai kätevästi tehtyä moniajoa.

Parin kilon prossu kuulostaa kyllä siltä kuin yrittäisit tunkea 45 numeroista jalkaa 36 numeron kenkään.

Sori, että tuuletin ikeniä ei alan miehenä, mutta kun nuo köyhän miehen pikkuohjelmat kiinnostivat itseäni ennen kovasti.

Onhan C-kielessäkin ihan tehokkaat funktiot käytettävissä ja valmis konekielinen käännös on ihan tyydyttävää, varmaan alle 100 kB.

Ennen tuo rajallinen muistin määrä todella pakotti miettimään, miten ohjelman rakentaa - toista on nyt, nopeus voittaa järjen määrän.

Äänestä
  • alan miehiä, mutta en osaa Karvinistia auttaa tietämättä tarkemmin ongelmaa, jonka kanssa hän on painimassa.

    Esimerkki tuontyyppisten ongelmien ratkaisemisesta on Apollo kuumoduulin tietokoneohjelma. Ja sitä ennen homman parissa oli painitty jo aiemmin esim. ydinohjusten ohjausjärjestelmien parissa. Siitä on jo liki 45 vuotta.

    Äänestä

  • jonkun verran kirjoitti:

    alan miehiä, mutta en osaa Karvinistia auttaa tietämättä tarkemmin ongelmaa, jonka kanssa hän on painimassa.

    Esimerkki tuontyyppisten ongelmien ratkaisemisesta on Apollo kuumoduulin tietokoneohjelma. Ja sitä ennen homman parissa oli painitty jo aiemmin esim. ydinohjusten ohjausjärjestelmien parissa. Siitä on jo liki 45 vuotta.

    Taisinpa antaa väärän kuvan kun mieleesi tuli kuumodulit ja ydinaseet. Minä olen niin monipuolisesti lahjaton että harvempi edes tarvitsee kaikkia niitä puolia eläissään. Parhaiten olen menestynyt kielten ja matematiikan lahjattomuudessa. Nämä synnynnäiset avuttomuudet olen yrittänyt korvata sitkeydellä, mutta aina sekään ei auta.
    Nonnih, nyt kun ollaan palattu maanpinnalle, niin asiaan.

    Tuo piskuinen 18-kinttuinen PIC16f628 prosessori jonka kanssa olen viimeaikoina tuhertanut, on niin kätevä, että se houkuttelee tekemään sellaisiakin sovelluksia joihin se ei oikeastaan sovellu. Yhdessä pienten LCD-näyttöjen kanssa sillä voi tehdä yhtä ja toista.

    Muutama viikko sitten sain päähäni että teenpäs kapasitanssimittarin joka ei tarvitse PC:n laskenta-apua. Se edellyttää neliöjuuren ottoa.
    Makasin parit viikot punkassa niin että kyljet tuli kipeiksi ja näpyttelin taskulaskinta. Luin myös mitä netistä löysin, mutta heikon älyni takia siitä jäi vain vähän villoja, jotakin kuitenkin.

    Lyhyesti:
    Luku m jaetaan kahdella kunnes m jää 1 ja 2 väliin. Jakojen määrä on eksponentti p.

    Heksaluku liukuluvuksi: fraktion=(m*2^(24-p)) - 2^24
    Liukuluku heksaluvuksi: m=(fraktion 2^24) / 2^(24-p). Desimaalit ovat jakojäännöksessä.

    Muitakin kaavoja on, mutta nämä sopivat heksaluvuilla laskettaviksi.
    Tähän saakka pääsin ja nämä kaavat pitävät ainakin johonkin mittaan saakka paikkansa, mutta sitten tuli tenkkapoo: miten fractiot kerrotaan ja jaetaan keskenään?

    Matemaattinen ”lahjakkuuteni” pakotti minut kopsaamaan C-kielen tekemät laskentapätkät. Ne ovat noin nälkävuoden mittaisia koskapa näyttävät ottavan kaikki mahdolliset virhelähteet huomioon tsunamista ilmastonmuutokseen.
    Jos osaat kertoa kansankielellä miten fraktiot kerrotaan ja jaetaan, niin siitä olisi suuri apu. Kun ymmärtää periaatteen niin toteutus kyllä syntyy. Niin päin se on helpompaa.

    Seuraavaksi himottaa induktanssimittari. Et satu tietämään hyviä kytkentöjä?

    Äänestä

  • ”Oli ällistyttävää, miten niin pieneen tilaan sai ohjelman, joka …”

    Olen myös ällistellyt nykyistä muistin holtitonta käyttöä. Ilmeisesti korkeamman tason ohjelmointikielet pläjäyttävät 100 kilon paketin jokaista näppäilyä tai pikseliä kohti, ja siitä on tarpeellista vain yhden tavun yksi testibitti.

    ” Parin kilon prossu kuulostaa kyllä siltä kuin yrittäisit tunkea 45 numeroista jalkaa 36 numeron kenkään.”

    Onhan se niinkin, mutta mitäpä tässä eläkevaarina muutakaan, kun ei ole enää tuottavuusohjelmien puristuksessa. Sitä paitsi juurenotto meni vain nirkosesti yli kilon, joten kyllä se siitä. Mielelläni kyllä puristaisin sen vieläkin pienempään tilaan. Saapi nähdä onko tuolla toisella vastaajalla jotain ideoita.

    Äänestä

  • KARVINISTI kirjoitti:

    Taisinpa antaa väärän kuvan kun mieleesi tuli kuumodulit ja ydinaseet. Minä olen niin monipuolisesti lahjaton että harvempi edes tarvitsee kaikkia niitä puolia eläissään. Parhaiten olen menestynyt kielten ja matematiikan lahjattomuudessa. Nämä synnynnäiset avuttomuudet olen yrittänyt korvata sitkeydellä, mutta aina sekään ei auta.
    Nonnih, nyt kun ollaan palattu maanpinnalle, niin asiaan.

    Tuo piskuinen 18-kinttuinen PIC16f628 prosessori jonka kanssa olen viimeaikoina tuhertanut, on niin kätevä, että se houkuttelee tekemään sellaisiakin sovelluksia joihin se ei oikeastaan sovellu. Yhdessä pienten LCD-näyttöjen kanssa sillä voi tehdä yhtä ja toista.

    Muutama viikko sitten sain päähäni että teenpäs kapasitanssimittarin joka ei tarvitse PC:n laskenta-apua. Se edellyttää neliöjuuren ottoa.
    Makasin parit viikot punkassa niin että kyljet tuli kipeiksi ja näpyttelin taskulaskinta. Luin myös mitä netistä löysin, mutta heikon älyni takia siitä jäi vain vähän villoja, jotakin kuitenkin.

    Lyhyesti:
    Luku m jaetaan kahdella kunnes m jää 1 ja 2 väliin. Jakojen määrä on eksponentti p.

    Heksaluku liukuluvuksi: fraktion=(m*2^(24-p)) - 2^24
    Liukuluku heksaluvuksi: m=(fraktion 2^24) / 2^(24-p). Desimaalit ovat jakojäännöksessä.

    Muitakin kaavoja on, mutta nämä sopivat heksaluvuilla laskettaviksi.
    Tähän saakka pääsin ja nämä kaavat pitävät ainakin johonkin mittaan saakka paikkansa, mutta sitten tuli tenkkapoo: miten fractiot kerrotaan ja jaetaan keskenään?

    Matemaattinen ”lahjakkuuteni” pakotti minut kopsaamaan C-kielen tekemät laskentapätkät. Ne ovat noin nälkävuoden mittaisia koskapa näyttävät ottavan kaikki mahdolliset virhelähteet huomioon tsunamista ilmastonmuutokseen.
    Jos osaat kertoa kansankielellä miten fraktiot kerrotaan ja jaetaan, niin siitä olisi suuri apu. Kun ymmärtää periaatteen niin toteutus kyllä syntyy. Niin päin se on helpompaa.

    Seuraavaksi himottaa induktanssimittari. Et satu tietämään hyviä kytkentöjä?

    Jaa siis neliöjuuri.
    Olihan noita opiskeluaikoina erilaisia iterointimenetelmiä, mutta ei niitä päässyt koskaan kokeilemaan tietokoneella, kun se oli suljetulla osastolla. Itse sai vain näpytellä reikäkorttikoneella fortrankielistä lähdekoodia, joka lähetettiin sitten ajettavaksi, ja vastaus haettiin seuraavana päivänä tulostelaatikosta - ja että oli hauskaa, kun tulos oli ensin monta kertaa jokin virhe.

    Yrittäisin jotain todella yksinkertaista menetelmää, haetaan lukua, joka itsellään kerrottuna antaa sen alkuperäisen luvun, josta neliöjuurta etsitään. Kaavan muotoon puettuna
    y = x*x
    siis x = neliöjuuri(x)
    Se tarttee vain jonkinlaisen iterointiluupin, jossa kokeillaan peräkkäisillä kierroksilla muuttujan arvoja x1, x2,.... xi
    lasketaan i kierrosta
    yi = xi*xi
    kunnes yi > y
    Ongelmaksi jää sopivan x: muutoksen dx valinta, että laskentatarkkuus ja toisaalta kulutettu aika on sopiva.

    Sopiva dx saattaa löytyä Newtonin menetelmällä, jossa dy-muutosta arvioidaan funktion derivaatalla, joka neliöjuuren tapauksessa on yksinkertainen 2*x
    eli y1 = y0 2*x*dx

    Semmonen pito mulla, että tältä pohjalta löytyis lyhyt algoritmi.

    Hyvät tekniset harrastukset sulla (eläkkeellä ollessa?). Menee selvästi yli Havukka-ahon ajattelijan tuumailujen.

    Äänestä

  • Horst S. kirjoitti:

    Jaa siis neliöjuuri.
    Olihan noita opiskeluaikoina erilaisia iterointimenetelmiä, mutta ei niitä päässyt koskaan kokeilemaan tietokoneella, kun se oli suljetulla osastolla. Itse sai vain näpytellä reikäkorttikoneella fortrankielistä lähdekoodia, joka lähetettiin sitten ajettavaksi, ja vastaus haettiin seuraavana päivänä tulostelaatikosta - ja että oli hauskaa, kun tulos oli ensin monta kertaa jokin virhe.

    Yrittäisin jotain todella yksinkertaista menetelmää, haetaan lukua, joka itsellään kerrottuna antaa sen alkuperäisen luvun, josta neliöjuurta etsitään. Kaavan muotoon puettuna
    y = x*x
    siis x = neliöjuuri(x)
    Se tarttee vain jonkinlaisen iterointiluupin, jossa kokeillaan peräkkäisillä kierroksilla muuttujan arvoja x1, x2,.... xi
    lasketaan i kierrosta
    yi = xi*xi
    kunnes yi > y
    Ongelmaksi jää sopivan x: muutoksen dx valinta, että laskentatarkkuus ja toisaalta kulutettu aika on sopiva.

    Sopiva dx saattaa löytyä Newtonin menetelmällä, jossa dy-muutosta arvioidaan funktion derivaatalla, joka neliöjuuren tapauksessa on yksinkertainen 2*x
    eli y1 = y0 2*x*dx

    Semmonen pito mulla, että tältä pohjalta löytyis lyhyt algoritmi.

    Hyvät tekniset harrastukset sulla (eläkkeellä ollessa?). Menee selvästi yli Havukka-ahon ajattelijan tuumailujen.

    Kaava on helppo mutta desimaalien pyörittäminen mukana laskettaessa on hankalaa ilman liukulukumoottoria.

    Omatekemä:
    ;-----------------------------------------------------------
    ;
    ; 2.juuri: L = juurrettava luku
    ; H = L/4
    ; V = 4
    ;loop:
    ; H = H/2 V/2
    ; V = L/H
    ; H == V?      
    ;ei: goto loop
    ;on: H=Vvalmis.
    ;
    ;-----------------------------------------------------------

    Se on sama millä luvulla L aluksi jaetaan kunhan V on jakaja. Itsekin hämmästyin kuinka nopeasti se juuri löytyy. Viimeistään kuudennella kierroksella V=H.
    Tuohon kaavaan päädyin ajattelemalla lukua ruudukkona jonka korkeus on yksi ruutu ja pituus L. Kun se jaetaan neljään osaan ja osat pinotaan päällekkäin saadaan ruudukko joka on horisontaalisuuntaan L/4 ja vertikaalisuuntaan 4. Erotus puolitetaan ja lisätään lyhemmälle sivulle muutaman kerran ja siinä se.

    Äänestä

  • KARVINISTI kirjoitti:

    Taisinpa antaa väärän kuvan kun mieleesi tuli kuumodulit ja ydinaseet. Minä olen niin monipuolisesti lahjaton että harvempi edes tarvitsee kaikkia niitä puolia eläissään. Parhaiten olen menestynyt kielten ja matematiikan lahjattomuudessa. Nämä synnynnäiset avuttomuudet olen yrittänyt korvata sitkeydellä, mutta aina sekään ei auta.
    Nonnih, nyt kun ollaan palattu maanpinnalle, niin asiaan.

    Tuo piskuinen 18-kinttuinen PIC16f628 prosessori jonka kanssa olen viimeaikoina tuhertanut, on niin kätevä, että se houkuttelee tekemään sellaisiakin sovelluksia joihin se ei oikeastaan sovellu. Yhdessä pienten LCD-näyttöjen kanssa sillä voi tehdä yhtä ja toista.

    Muutama viikko sitten sain päähäni että teenpäs kapasitanssimittarin joka ei tarvitse PC:n laskenta-apua. Se edellyttää neliöjuuren ottoa.
    Makasin parit viikot punkassa niin että kyljet tuli kipeiksi ja näpyttelin taskulaskinta. Luin myös mitä netistä löysin, mutta heikon älyni takia siitä jäi vain vähän villoja, jotakin kuitenkin.

    Lyhyesti:
    Luku m jaetaan kahdella kunnes m jää 1 ja 2 väliin. Jakojen määrä on eksponentti p.

    Heksaluku liukuluvuksi: fraktion=(m*2^(24-p)) - 2^24
    Liukuluku heksaluvuksi: m=(fraktion 2^24) / 2^(24-p). Desimaalit ovat jakojäännöksessä.

    Muitakin kaavoja on, mutta nämä sopivat heksaluvuilla laskettaviksi.
    Tähän saakka pääsin ja nämä kaavat pitävät ainakin johonkin mittaan saakka paikkansa, mutta sitten tuli tenkkapoo: miten fractiot kerrotaan ja jaetaan keskenään?

    Matemaattinen ”lahjakkuuteni” pakotti minut kopsaamaan C-kielen tekemät laskentapätkät. Ne ovat noin nälkävuoden mittaisia koskapa näyttävät ottavan kaikki mahdolliset virhelähteet huomioon tsunamista ilmastonmuutokseen.
    Jos osaat kertoa kansankielellä miten fraktiot kerrotaan ja jaetaan, niin siitä olisi suuri apu. Kun ymmärtää periaatteen niin toteutus kyllä syntyy. Niin päin se on helpompaa.

    Seuraavaksi himottaa induktanssimittari. Et satu tietämään hyviä kytkentöjä?

    selityksestäsi mitä ajat takaa...

    Esim. tämä valmis PIC koodi ei siis tarkoituksiisi kelpaa?
    http://www.dattalo.com/technical/software/pic/picsqrt.html

    Teoriaa:
    http://www.dattalo.com/technical/theory/sqrt.html

    Äänestä

  • saanut selville kirjoitti:

    selityksestäsi mitä ajat takaa...

    Esim. tämä valmis PIC koodi ei siis tarkoituksiisi kelpaa?
    http://www.dattalo.com/technical/software/pic/picsqrt.html

    Teoriaa:
    http://www.dattalo.com/technical/theory/sqrt.html

    Vaikka on netti käytössä niin olen vähän avuton kun en osaa muuta kuin suomen kieltä. Hain kyllä kovasti mutta en osunut noin käytännönläheisille sivuille. Sieltä irtoaa varmaan vielä käyttökelpoista koodia kunhan ehdin lähemmin tutustua asiaan. Erityisesti tuo teoriasivun lopussa oleva ”And a more optimized version:” vaikuttaa lupaavalta.

    Nuo valmiit PIC-koodit eivät todellakaan riitä tarkoituksiini koska pikofaradien mittaaminen vaatii suurempaa tarkkuutta, mutta ei voi kuin ihailla kundien nokkeluutta kun ne noita väsää.

    Se mitä ajoin takaa, on nyt vähän menettänyt merkitystään, tai ainakin kiireellisyyttään, mutta selitän nyt vähän sitäkin.
    Netistä löytämieni ohjeiden mukaan liukuluvut kerrotaan keskenään siten, että eksponentit lasketaan yhteen ja fraktio osat kerrotaan keskenään:
    Esim: 100*1000
    85 48 00 00
    *88 7A 00 00
    ----------------
    =8E ?? ?? ??

    eksponenttien yhteenlasku vielä onnistuu, mutta entäs tuo fraktiopuoli. Siihen tökkäsi minun ohjelmanteko. Ei auttanut muu kuin kopioida C-kielestä muutama pätkä.

    Äänestä

  • KARVINISTI kirjoitti:

    Vaikka on netti käytössä niin olen vähän avuton kun en osaa muuta kuin suomen kieltä. Hain kyllä kovasti mutta en osunut noin käytännönläheisille sivuille. Sieltä irtoaa varmaan vielä käyttökelpoista koodia kunhan ehdin lähemmin tutustua asiaan. Erityisesti tuo teoriasivun lopussa oleva ”And a more optimized version:” vaikuttaa lupaavalta.

    Nuo valmiit PIC-koodit eivät todellakaan riitä tarkoituksiini koska pikofaradien mittaaminen vaatii suurempaa tarkkuutta, mutta ei voi kuin ihailla kundien nokkeluutta kun ne noita väsää.

    Se mitä ajoin takaa, on nyt vähän menettänyt merkitystään, tai ainakin kiireellisyyttään, mutta selitän nyt vähän sitäkin.
    Netistä löytämieni ohjeiden mukaan liukuluvut kerrotaan keskenään siten, että eksponentit lasketaan yhteen ja fraktio osat kerrotaan keskenään:
    Esim: 100*1000
    85 48 00 00
    *88 7A 00 00
    ----------------
    =8E ?? ?? ??

    eksponenttien yhteenlasku vielä onnistuu, mutta entäs tuo fraktiopuoli. Siihen tökkäsi minun ohjelmanteko. Ei auttanut muu kuin kopioida C-kielestä muutama pätkä.

    ...

    Äänestä

Kommentoi aloitusta


KARVINISTI kirjoitti:

Hain kaljaa sen takia että saisin tuon ohjelmointiputken poikki. Kaljasta huolimatta kynnet syyhyää mutta kun aivo ei toimi.
Mutta toimii se silti paremmin kuin retardeilla ja muilla evouskiksilla.

Tosiasiassa minä olen huomattavan tyhmä. Olen pari viikkoa yrittänyt väsätä sellaista köyhänmiehen liukuluku ohjelmaa joka sopisi pieneen, parinkilon suorittimeen mukavammin kuin mikroC:stä pöllitty ohjelma, mutta siitä tuli lähes yhtä pitkä. Tosin pientä parannustakin on. Liukuluku-desimaalimuunnoksen onnistuin tunkemaan aika pieneen nippuun, harmi kyllä, tarkkuuden kustannuksella.

Onko alan miehiä kuulolla?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu