亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gsegyendianess.c

?? segy 顯示程序!希望能給正在做這部分朋友提供一部分資料
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/* 
 * GSEGYLIB - Library for accessing files in SEG-Y format
 *
 * Copyright (C) 2005-2006 Vladimir Bashkardin
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This program 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
 * General Public License for more av.
 *
 * You should have received a copy of the GNU General Public
 * License along with this program; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 * Author:  Vladimir Bashkardin  <vovizmus@users.sourceforge.net>
 */

#include <math.h>
#include "gsegyendianess.h"

G_DEFINE_TYPE (GSEGYEndianess, g_segy_endianess, G_TYPE_OBJECT)

GSEGYEndianess* g_segy_endianess_new_with_default (void) {
    return G_SEGY_ENDIANESS (g_object_new (G_SEGY_TYPE_ENDIANESS, NULL));
}

GSEGYEndianess* g_segy_endianess_new (gboolean swap_bytes, gboolean ibm_to_ieee) {
    return G_SEGY_ENDIANESS (g_object_new (G_SEGY_TYPE_ENDIANESS, "swap_bytes", swap_bytes, "ibm_to_ieee", ibm_to_ieee, NULL));
}

void g_segy_endianess_ibm_to_ieee (GSEGYEndianess *self, guint32 *ibm, guint32 *ieee) {
    guint32 input = *ibm;
    guint32 mantissa, t;

    if (self->ibm_to_ieee) {
        if (input) {
            if (self->swap_bytes)
                input = (input << 24) | ((input >> 24) & 0xff) |
                         ((input & 0xff00) << 8) | ((input & 0xff0000) >> 8);

            mantissa = 0x00ffffff & input;
            if (0 == mantissa) {
                *ieee = 0;
                return;
            }
            t = (guint32) ((0x7f000000 & input) >> 22) - 130;
            while (!(mantissa & 0x00800000)) {
                t = t - 1; 
                mantissa <<= 1;
            }
            if (t > 254)
                input = (0x80000000 & input) | 0x7f7fffff;
            else if (t <= 0)
                input = 0;
            else
                input = (0x80000000 & input) | (t << 23) | (0x007fffff & mantissa);
        }
    } else if (self->swap_bytes && input)
        input = (input << 24) | ((input >> 24) & 0xff) |
                 ((input & 0xff00) << 8) | ((input & 0xff0000) >> 8);

    *ieee = input;
}

void g_segy_endianess_ibm_to_ieee_array (GSEGYEndianess *self, guint32 *ibm, guint32 *ieee, guint64 length) {
    guint64 i;

    if (self->ibm_to_ieee) {
        guint32 input;
        guint32 mantissa, t;
        for (i = 0; i < length; i++) {
            input = ibm[i];
            if (input) {
                if (self->swap_bytes)
                    input = (input << 24) | ((input >> 24) & 0xff) |
                             ((input & 0xff00) << 8) | ((input & 0xff0000) >> 8);

                mantissa = 0x00ffffff & input;
                if (0 == mantissa) {
                    *ieee = 0;
                    return;
                }
                t = (guint32) ((0x7f000000 & input) >> 22) - 130;
                while (!(mantissa & 0x00800000)) {
                    t = t - 1; 
                    mantissa <<= 1;
                }
                if (t > 254)
                    input = (0x80000000 & input) | 0x7f7fffff;
                else if (t <= 0)
                    input = 0;
                else
                    input = (0x80000000 & input) | (t << 23) | (0x007fffff & mantissa);
            }
            ieee[i] = input;
        }
    } else {
        if (ibm != ieee) {
            for (i = 0; i < length; i++)
                ieee[i] = ibm[i];
        }
        if (self->swap_bytes) {
            for (i = 0; i < length; i++) {
                if (ieee[i])
                    ieee[i] = (ieee[i] << 24) | ((ieee[i] >> 24) & 0xff) |
                               ((ieee[i] & 0xff00) << 8) | ((ieee[i] & 0xff0000) >> 8);
            }
        }
    }
}

void g_segy_endianess_ieee_to_ibm (GSEGYEndianess *self, guint32 *ieee, guint32 *ibm) {
    guint32 input = *ieee;
    guint32 mantissa, t;

    if (self->ibm_to_ieee) {
        if (input) {
            mantissa = (0x007fffff & input) | 0x00800000;
            t = (guint32) ((0x7f800000 & input) >> 23) - 126;
            while (t & 0x3) {
                t = t + 1;
                mantissa >>= 1;
            }
            input = (0x80000000 & input) | (((t >> 2) + 64) << 24) | mantissa;

            if (self->swap_bytes)
                input = (input << 24) | ((input >> 24) & 0xff) |
                         ((input & 0xff00) << 8) | ((input & 0xff0000) >> 8);
        }
    } else if (self->swap_bytes && input)
        input = (input << 24) | ((input >> 24) & 0xff) |
                 ((input & 0xff00) << 8) | ((input & 0xff0000) >> 8);

    *ibm = input;
}

void g_segy_endianess_ieee_to_ibm_array (GSEGYEndianess *self, guint32 *ieee, guint32 *ibm, guint64 length) {
    guint64 i;

    if (self->ibm_to_ieee) {
        guint32 input;
        guint32 mantissa, t;
        for (i = 0; i < length; i++) {
            if (input) {
                input = ieee[i];
                mantissa = (0x007fffff & input) | 0x00800000;
                t = (guint32) ((0x7f800000 & input) >> 23) - 126;
                while (t & 0x3) {
                    t = t + 1;
                    mantissa >>= 1;
                }
                input = (0x80000000 & input) | (((t >> 2) + 64) << 24) | mantissa;
            }

            if (self->swap_bytes)
                input = (input << 24) | ((input >> 24) & 0xff) |
                        ((input & 0xff00) << 8) | ((input & 0xff0000) >> 8);
            ibm[i] = input;
        }
    } else {
        if (ieee != ibm) {
            for (i = 0; i < length; i++)
                ibm[i] = ieee[i];
        }
        if (self->swap_bytes) {
            for (i = 0; i < length; i++) {
                if (ibm[i])
                    ibm[i] = (ibm[i] << 24) | ((ibm[i] >> 24) & 0xff) |
                             ((ibm[i] & 0xff00) << 8) | ((ibm[i] & 0xff0000) >> 8);
            }
        }
    }
}

void g_segy_endianess_swap_ieee_float (GSEGYEndianess *self, guint32 *input, guint32 *output) {
    guint32 temp = *input;

    if (self->swap_bytes)
        temp = (((temp >> 24) & 0xff) | ((temp & 0xff) << 24) |
                ((temp >> 8) & 0xff00) | ((temp & 0xff00) << 8));

    *output = temp;
}

void g_segy_endianess_swap_ieee_float_array (GSEGYEndianess *self, guint32 *input, guint32 *output, guint64 length) {
    guint64 i;

    if (self->swap_bytes) {
        for (i = 0; i < length; i++) {
            output[i] = (((input[i] >> 24) & 0xff) | ((input[i] & 0xff) << 24) |
                         ((input[i] >> 8) & 0xff00) | ((input[i] & 0xff00) << 8));
        }
    } else if (input != output) {
        for (i = 0; i < length; i++)
            output[i] = input[i];
    }
}

void g_segy_endianess_gain_code_to_float (GSEGYEndianess *self, guint32 *input, guint32 *output) {
    guint32 temp = *input;
    gint16 num;
    gint8 gain;
    gfloat *result = (gfloat*)output;

    if (self->swap_bytes)
        temp = (temp << 24) | ((temp >> 24) & 0xff) |
                ((temp & 0xff00) << 8) | ((temp & 0xff0000) >> 8);

    num = temp & 0xffff;
    gain = (temp & 0xff0000) >> 16;
    *result = num * pow (2.0, gain);
}

void g_segy_endianess_gain_code_to_float_array (GSEGYEndianess *self, guint32 *input, guint32 *output, guint64 length) {
    guint64 i;
    guint32 temp;
    gint16 num;
    gint8 gain;

    for (i = 0; i < length; i++) {
        temp = input[i];
        if (self->swap_bytes)
            temp = (temp << 24) | ((temp >> 24) & 0xff) |
                    ((temp & 0xff00) << 8) | ((temp & 0xff0000) >> 8);

            num = temp & 0xffff;
            gain = (temp & 0xff0000) >> 16;
            output[i] = num * pow (2.0, gain);
    }
}

void g_segy_endianess_float_to_gain_code (GSEGYEndianess *self, guint32 *input, guint32 *output) {
    gfloat temp = *(gfloat*)input;
    gfloat tmp;
    gint16 num;
    gint8 gain = 0;

    if (fabs (temp) < 1.0) {
        for (gain = 1; gain < G_MAXINT8; gain++) {
            tmp = fabs (temp * pow (2.0, gain));
            if (tmp > G_MAXINT8 && tmp < G_MAXINT16) {
                num = temp * pow (2.0, gain);
                gain = -gain;
                break;
            }
        }
    } else {
        for (gain = 1; gain < G_MAXINT8; gain++) {
            tmp = fabs (temp / pow (2.0, gain));
            if (tmp > G_MAXINT8 && tmp < G_MAXINT16) {
                num = temp / pow (2.0, gain);
                break;
            }
        }
    }

    *output = 0;
    *output = ((guint8)gain << 16) | (guint16)num;

    if (self->swap_bytes)
        *output = (*output << 24) | ((*output >> 24) & 0xff) |
                   ((*output & 0xff00) << 8) | ((*output & 0xff0000) >> 8);
}

void g_segy_endianess_float_to_gain_code_array (GSEGYEndianess *self, guint32 *input, guint32 *output, guint64 length) {
    guint64 i;
    gfloat temp;
    gfloat tmp;
    gint16 num;
    gint8 gain = 0;

    for (i = 0; i < length; i++) {
        temp = *(gfloat*)&input[i];
        if (fabs (temp) < 1.0) {
            for (gain = 1; gain < G_MAXINT8; gain++) {
                tmp = fabs (temp * pow (2.0, gain));
                if (tmp > G_MAXINT8 && tmp < G_MAXINT16) {
                    num = temp * pow (2.0, gain);
                    gain = -gain;
                    break;
                }
            }
        } else {
            for (gain = 1; gain < G_MAXINT8; gain++) {
                tmp = fabs (temp / pow (2.0, gain));
                if (tmp > G_MAXINT8 && tmp < G_MAXINT16) {
                    num = temp / pow (2.0, gain);
                    break;
                }
            }
        }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃免费观看视频| 首页综合国产亚洲丝袜| 国产电影一区二区三区| 国产午夜精品一区二区三区嫩草 | 日韩三级在线免费观看| 蜜芽一区二区三区| 2019国产精品| 成人精品视频网站| 伊人夜夜躁av伊人久久| 欧美电影在哪看比较好| 美女一区二区久久| 欧美国产日韩a欧美在线观看 | 欧美一区二区三区免费| 极品瑜伽女神91| 亚洲国产电影在线观看| 91视频免费看| 日韩av一级电影| 久久先锋影音av鲁色资源网| av在线综合网| 日韩成人av影视| 久久久久久久久久看片| 99re成人在线| 日韩不卡免费视频| 国产欧美日韩综合精品一区二区| 99riav一区二区三区| 视频一区二区三区在线| 久久精品一区八戒影视| 色香蕉成人二区免费| 蜜臀av一区二区在线观看| 亚洲成人精品一区| 精品国产一区二区精华| 成人免费毛片aaaaa**| 亚洲成av人片www| 欧美韩国一区二区| 9191成人精品久久| 成人av在线电影| 秋霞电影一区二区| 亚洲九九爱视频| 精品国产一区二区三区忘忧草| 色综合久久88色综合天天免费| 免费欧美在线视频| 综合亚洲深深色噜噜狠狠网站| 日韩一区二区在线播放| 99久久精品久久久久久清纯| 麻豆成人在线观看| 亚洲综合色自拍一区| 亚洲国产精品精华液ab| 69精品人人人人| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲国产精品精华液2区45| 欧美日免费三级在线| 不卡一区二区中文字幕| 久久福利视频一区二区| 亚洲成人动漫一区| **网站欧美大片在线观看| 亚洲精品国产高清久久伦理二区| 精品88久久久久88久久久| 欧美精品一二三区| 色综合久久天天| 99久久免费精品高清特色大片| 国产一区二区中文字幕| 日本免费新一区视频| 亚洲国产精品久久久男人的天堂 | 国产精品理论在线观看| 欧美videos大乳护士334| 欧美电影一区二区| 欧美色中文字幕| 欧美性极品少妇| 日本乱人伦aⅴ精品| aaa亚洲精品| 99精品久久免费看蜜臀剧情介绍| 床上的激情91.| 国产成人精品一区二| 国产一区二区三区四区五区美女 | 国产日韩欧美a| 精品日韩在线观看| 欧美xxxx老人做受| 日韩一区二区三区电影| 欧美一级高清片| 日韩欧美资源站| 精品久久久久久久一区二区蜜臀| 日韩欧美中文一区| 欧美大片在线观看一区| 精品88久久久久88久久久| 欧美va亚洲va| 国产午夜精品一区二区三区视频 | 视频在线在亚洲| 午夜不卡在线视频| 日本一区中文字幕| 久久se精品一区二区| 国产精品夜夜爽| 99久久精品情趣| 精品视频一区二区三区免费| 91精品国产综合久久久久久久久久| 91精品欧美一区二区三区综合在| 欧美一区二区福利在线| 精品久久一区二区| 国产精品三级久久久久三级| 亚洲色大成网站www久久九九| 亚洲欧美国产高清| 三级一区在线视频先锋 | 天天av天天翘天天综合网| 免费观看日韩av| 国产美女精品一区二区三区| jiyouzz国产精品久久| 欧美性xxxxxxxx| 欧美电视剧在线看免费| 欧美国产激情二区三区| 一区二区三区蜜桃| 久久99久久精品| 99久久久久免费精品国产| 欧美日韩亚洲不卡| 久久久噜噜噜久噜久久综合| 亚洲欧洲无码一区二区三区| 五月婷婷激情综合网| 国产精品综合网| 在线视频你懂得一区二区三区| 欧美一区二区三区免费在线看 | 成人黄色a**站在线观看| 91福利精品第一导航| 欧美mv和日韩mv国产网站| 国产精品成人一区二区艾草 | 亚洲美女淫视频| 麻豆91小视频| 日本韩国一区二区三区| 亚洲精品一区二区三区四区高清 | 91精品国产色综合久久不卡电影| 久久久综合九色合综国产精品| 亚洲女人****多毛耸耸8| 极品少妇一区二区三区精品视频| 91污片在线观看| 久久女同性恋中文字幕| 亚洲成人精品一区二区| 99久久综合99久久综合网站| 欧美成人乱码一区二区三区| 亚洲自拍偷拍网站| 丁香婷婷综合色啪| 日韩视频免费观看高清完整版| 亚洲人成网站色在线观看| 国产剧情一区二区三区| 欧美丰满少妇xxxxx高潮对白| 国产精品灌醉下药二区| 国产精品一线二线三线| 欧美一区二区三区在| 亚洲精选在线视频| 成人av电影免费观看| 精品国产91久久久久久久妲己| 夜夜揉揉日日人人青青一国产精品| 国产宾馆实践打屁股91| 日韩精品一区二区三区在线播放| 一区二区三区在线看| av网站一区二区三区| 亚洲精品在线观| 免费xxxx性欧美18vr| 欧美精品日韩精品| 亚洲一区二区三区视频在线| av影院午夜一区| 中文久久乱码一区二区| 国产精品888| 久久天天做天天爱综合色| 欧美影视一区二区三区| 国产精品久久久久久亚洲毛片 | 天天综合色天天综合色h| 色综合 综合色| 一色屋精品亚洲香蕉网站| 成人激情文学综合网| 亚洲国产岛国毛片在线| 国产成a人亚洲| 国产性做久久久久久| 成人免费av网站| 中文子幕无线码一区tr| 成人免费黄色在线| 中文字幕一区二区不卡| 99久久综合国产精品| 亚洲欧美成aⅴ人在线观看| 色综合天天做天天爱| 亚洲国产精品久久艾草纯爱 | 亚洲人妖av一区二区| 99在线视频精品| 一区二区三区产品免费精品久久75| 91在线精品一区二区三区| 亚洲欧美福利一区二区| 欧美在线视频你懂得| 日韩国产一二三区| 精品国产一区二区在线观看| 国产成人亚洲综合a∨猫咪 | 国产精品卡一卡二| 91在线精品秘密一区二区| 亚洲自拍偷拍网站| 欧美一区二区视频在线观看2022| 蜜桃久久av一区| 久久美女高清视频| 91原创在线视频| 天堂在线亚洲视频| 久久嫩草精品久久久久| 不卡大黄网站免费看| 午夜精品福利一区二区蜜股av | 久久久影视传媒| av资源网一区| 免费看黄色91|